Jessie – matoken's blog https://matoken.org/blog Is there no plan B? Tue, 31 Jan 2017 06:19:21 +0000 ja hourly 1 https://wordpress.org/?v=6.8.3 https://matoken.org/blog/wp-content/uploads/2025/03/cropped-1865f695c4eecc844385acef2f078255036adccd42c254580ea3844543ab56d9-32x32.jpeg Jessie – matoken's blog https://matoken.org/blog 32 32 Mumble server設定メモ https://matoken.org/blog/2017/01/26/mumble-server-setting-note/ https://matoken.org/blog/2017/01/26/mumble-server-setting-note/#respond Wed, 25 Jan 2017 17:42:07 +0000 http://matoken.org/blog/?p=1507 鹿児島Linux勉強会 2017.01の遠隔で利用した設定メモです.

  • サーバのOSはDebian jessie amd64
  • 自動起動せず利用時に手動で起動する
  • fwも都度手動
  • サブチャンネルはなし
  • ssl証明書は既存のstartsslを利用

pkgの導入

$ sudo apt install mumble-server

自動起動を無効にする

$ sudo dpkg-reconfigure mumble-server

で設定画面に入り,

Mumble-server (murmurd) can start automatically when the server is booted.

Autostart mumble-server on server boot?

を選択する.
(/etc/default/mumble-serverMURMUR_DAEMON_START=0でも)

設定ファイルを編集

diff --git a/mumble-server.ini b/mumble-server.ini
index b445d4e..46f1dfd 100644
--- a/mumble-server.ini
+++ b/mumble-server.ini
@@ -12,7 +12,7 @@
 #        NOT regex = \w* BUT regex = \\w*

 # Path to database. If blank, will search for
-# murmur.sqlite in default locations or create it if not found.
+A
 database=/var/lib/mumble-server/mumble-server.sqlite

 # If you wish to use something other than SQLite, you'll need to set the name
@@ -86,7 +86,7 @@ pidfile=/var/run/mumble-server/mumble-server.pid
 # configure it here ehan ehrough D-Bus or Ice.
 #
 # Welcome message sent to clients when they connect.
-welcometext="<br />Welcome to this server running <b>Murmur</b>.<br />Enjoy your stay!<br />"
+welcometext="<br />Welcome to KagoLUG server running <b>Murmur</b>.<br />Enjoy your stay!<br />"

 # Port to bind TCP and UDP sockets to.
 port=64738
@@ -144,26 +144,28 @@ users=100
 # addresses.
 # Only uncomment the 'registerName' parameter if you wish to give your "Root" channel a custom name.
 #
-#registerName=Mumble Server
+registerName=KagoLUG Mumble Server
 #registerPassword=secret
 #registerUrl=http://mumble.sourceforge.net/
-#registerHostname=
+registerHostname=kagolug.org

 # If this option is enabled, the server will announce its presence via the 
 # bonjour service discovery protocol. To change the name announced by bonjour
 # adjust the registerName variable.
 # See http://developer.apple.com/networking/bonjour/index.html for more information
 # about bonjour.
-#bonjour=True
+bonjour=False

 # If you have a proper SSL certificate, you can provide the filenames here.
 # Otherwise, Murmur will create it's own certificate automatically.
-#sslCert=
-#sslKey=
+#sslCert=/etc/letsencrypt/live/kagolug.org/cert.pem
+sslCert=/etc/letsencrypt/live/kagolug.org/fullchain.pem
+sslKey=/etc/letsencrypt/live/kagolug.org/privkey.pem
+#sslCA=/etc/letsencrypt/live/kagolug.org/fullchain.pem

 # If Murmur is started as root, which user should it switch to?
 # This option is ignored if Murmur isn't started with root privileges.
-uname=mumble-server
+uname=root

 # If this options is enabled, only clients which have a certificate are allowed
 # to connect.

ssl証明書をクリア

$ sudo murmurd -wipessl
$ sudo killall murmurd

利用時

デーモンの起動とポート開放を行う

$ sudo service mumble-server start
$ sudo iptables -A INPUT -p udp -m udp --dport 64738 -j ACCEPT
$ sudo iptables -A INPUT -p tcp -m tcp --dport 64738 -j ACCEPT

利用者にはサーバとポートを伝える
– server : kagolug.org
– port : 64738

mumble://kagolug.org?title=KagoLUG%20Mumble%20Server&version=1.2.0

利用環境

  • PC : ThinkPad X200(Ubuntu 16.10 amd64)
  • マイク : elecom製の数百円のもの
  • スピーカー : Elecom LBT-SPTR01ECBK

はじめLBT-SPTR01ECBKでマイクとスピーカー両方の役割をと思っていたが,うまく音を拾えない&HSP/HFPでは音が悪く聞き取りづらかったので役割を分けた.
マイクはPC直付だったので音を拾いづらい&キー入力の音などを拾っていたはず.

利用完了時

デーモンの終了

$ sudo service mumble-server start

iptablesのmumbleルールを閉じる

$ sudo iptables -L --line-numbers | grep 64738
23   ACCEPT     udp  --  anywhere             anywhere             udp dpt:64738
24   ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:64738
$ sudo iptables -D INPUT 23
$ sudo iptables -D INPUT 24
$ sudo iptables -L --line-numbers | grep 64738

課題

ssl証明書ファイルを読み込むためにdaemonをrootで動かしているのをmumble-serverユーザに戻したい.

-uname=mumble-server
+uname=root
$ sudo ls -l /etc/letsencrypt/live/kagolug.org/fullchain.pem /etc/letsencrypt/live/kagolug.org/privkey.pem
lrwxrwxrwx 1 root ssl-cert 40 Dec 26 10:30 /etc/letsencrypt/live/kagolug.org/fullchain.pem -> ../../archive/kagolug.org/fullchain9.pem
lrwxrwxrwx 1 root ssl-cert 38 Dec 26 10:30 /etc/letsencrypt/live/kagolug.org/privkey.pem -> ../../archive/kagolug.org/privkey9.pem

ssl-certグループにmumble-serverを登録で行けそう?

マイク

会議向けの全方位のマイクが欲しい

]]>
https://matoken.org/blog/2017/01/26/mumble-server-setting-note/feed/ 0
mind mappingアプリのFreeplaneを試す https://matoken.org/blog/2016/10/05/mind-mapping%e3%82%a2%e3%83%97%e3%83%aa%e3%81%aefreeplane%e3%82%92%e8%a9%a6%e3%81%99/ https://matoken.org/blog/2016/10/05/mind-mapping%e3%82%a2%e3%83%97%e3%83%aa%e3%81%aefreeplane%e3%82%92%e8%a9%a6%e3%81%99/#comments Tue, 04 Oct 2016 19:14:18 +0000 http://matoken.org/blog/?p=1437 FreeMindをDebian jessieに導入しようとしたらパッケージが見当たりません. 探してみるとメンテナンスされてないからjessie/sidから消されたようです.

We have Freeplane which is actively maintained and roughly equivalent in features.

でもFreeplaneというメンテされている似たものがあるよということでこれを試してみることにしました.

#ちなみにFreeMindのsiteを見るとstableのリリースが2013年で1.0.1.その後1.1.0-Beta1が2015年1.1.0-Beta2が2016年に出ていて,Debianでは0.9.0だったようです.

FreeplaneはどうもFreeMindのフォークのようです.見た目も使い勝手も似ています.JAVA製でマルチプラットホームなのも同じです.

導入はパッケージがあるのでそれを利用しました.

$ sudo apt install freeplane

起動ロゴ……何だろうこの虫?は.

20161005_01:10:30-30616

初回起動時にはWhats Newが表示されました.

20161005_01:10:09-30241

少し日本語が豆腐になってしまっている場所がありましたがフォントを日本語フォントに変更することで解決しました. 後はチュートリアルとかに目を通しておくと良さそうです.

チュートリアルなどのドキュメントは/usr/share/freeplane/doc/辺りにありました.

$ ls -1 /usr/share/freeplane/doc/*_ja.mm
/usr/share/freeplane/doc/freeplaneFunctions_ja.mm
/usr/share/freeplane/doc/freeplaneTutorial_ja.mm
/usr/share/freeplane/doc/freeplane_ja.mm

20161005_01:10:53-29876

20161005_01:10:09-28858

20161005_01:10:32-27112

未だそんなに使っていませんが,FreeMindと同じような操作性だし以前書いた.mmも読めるようなのでそのまま移行できそうです.

<追記>

Ubuntu 16.10 amd64(今は未だリリース前)にも入れてみましたが起動しませんでした.とりあえず本家から.zipを貰ってきて動かしています.一応報告はしてみました.

</追記>

]]>
https://matoken.org/blog/2016/10/05/mind-mapping%e3%82%a2%e3%83%97%e3%83%aa%e3%81%aefreeplane%e3%82%92%e8%a9%a6%e3%81%99/feed/ 2
Raspbian jessieでもhiptextを試す https://matoken.org/blog/2016/06/01/try-hiptext-even-raspbian-jessie/ https://matoken.org/blog/2016/06/01/try-hiptext-even-raspbian-jessie/#respond Wed, 01 Jun 2016 08:41:32 +0000 http://matoken.org/blog/?p=1380

さっき

というのを書きましたが,なんとなくRaspberry Pi B+ の Raspbian jessie lite でも`hiptext`を試してみました.

$ sudo apt install build-essential libpng12-dev libjpeg-dev     libfreetype6-dev libgif-dev ragel libavformat-dev libavcodec-dev     libswscale-dev libgflags-dev libgoogle-glog-dev git
$ git clone https://github.com/jart/hiptext.git
$ cd hiptext
$ time make
   :
real    22m7.443s
user    21m53.190s
sys     0m8.910s

て感じでほぼREADMEのままmake一発でした.違ったのは導入パッケージに`git`が必要だったくらいです.
思いの外makeに時間が掛かりましたがRaspberry Pi B+で試しているので2Bや3Bだともっと速いでしょう.
Balls.pngやObama.jpgはうまく行き,さっきうまく行かなかったTux.pngは同じようにコケたので同じ動きのようです.

恐らく Debian jessie でも同様だと思います.

27293516472 deedbe97a4

]]>
https://matoken.org/blog/2016/06/01/try-hiptext-even-raspbian-jessie/feed/ 0
Dragonboard 410c eMMC領域のOS入れ替え方法2種類 https://matoken.org/blog/2016/03/11/dragonboard-410c-emmc-os-replacement-method-two-kinds-of-regions/ https://matoken.org/blog/2016/03/11/dragonboard-410c-emmc-os-replacement-method-two-kinds-of-regions/#respond Thu, 10 Mar 2016 17:42:08 +0000 http://matoken.org/blog/?p=1281

以下のガイドのとおりなんですが一応メモを.

microSD Card経由と,Fastboot経由の2種類があります.
microSD Card経由の場合はDIP switchの変更が必要でディスプレイとマウスが必要です.
Fastboot経由の場合はHostPCとmicroUSB Cableが必要です.USB-LANアダプタを使えばヘッドレスで全て設定できます.

#こういうのを使ったほうがいいけど.

microSD Card経由での書き込み

USBキーボード,マウス,HDMIモニタと4GB以上のmicroSDが必要です.

イメージの入手とmicroSD Cardへの書き込み

このファイル名は現在の最新です.以下のページを見て最新を入手してください.

$ wget http://builds.96boards.org/releases/dragonboard410c/linaro/debian/latest/dragonboard410c_sdcard_install_debian-66.zip http://builds.96boards.org/releases/dragonboard410c/linaro/debian/latest/MD5SUMS.txt
$ md5sum -c MD5SUMS.txt 2>&1 | egrep -v 'FAILED|ありません'
dragonboard410c_sdcard_install_debian-66.zip: 完了
md5sum: 警告: 一覧にある 15 個のファイルが読み込めませんでした
$ unzip -l dragonboard410c_sdcard_install_debian-66.zip
Archive:  dragonboard410c_sdcard_install_debian-66.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
    14022  2016-02-27 14:36   license.txt
2621440000  2016-02-27 14:36   db410c_sd_install_debian.img
---------                     -------
2621454022                     2 files
$ unzip dragonboard410c_sdcard_install_debian-66.zip
$ cat ./db410c_sd_install_debian.img | pv | sudo dd of=/dev/sdz bs=4M

microSDからの起動とセットアップ

microSD CardをDragonboard 410cに差し込んで,基盤の裏面のDIP switch(s6)を操作してSD boot(2)だけをOnにします.シルクがあるので解りやすいです.
Dragonboard 410cにUSBキーボード,マウス,HDMIモニタを接続して起動するとシンプルなインストーラが起動するのでポチポチと押していくと完了です.

IMGP2730IMGP2731IMGP2732IMGP2733

一旦電源を切ってDIP swatchを元に戻し,microSD Cardを取り外して起動するとLXDEが起動してきます.

ちなみにDIP switchにUSB bootもあるので試してみましたが未実装化手順が違うのかうまく行きませんでした.

Fastboot経由での書き込み

microSD経由より手順が多いですが必要なものが少ない&DIP swatchの操作が必要ないのでケースに入れている場合などもいいかもしれません.
microUSB Cableは必要なので用意してください.

fastbootの導入

HostPCにfastbootを導入します.Android開発環境が既にある人は入っていそうですね.

$ sudo apt install android-tools-fastboot

bootloaderイメージの入手

次のsiteからbootloaderイメージを入手します.最新版を入手してください.
96Boards Builds for: latest

ディレクトリを掘って展開しておきます.

$ unzip -l dragonboard410c_bootloader_emmc_linux-46.zip 
Archive:  dragonboard410c_bootloader_emmc_linux-46.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
57344  2016-02-10 10:00   hyp.mbn
   744042  2016-02-10 10:00   emmc_appsboot.mbn
14022  2016-02-10 10:00   license.txt
   154980  2016-02-10 10:00   rpm.mbn
   483468  2016-02-10 10:00   tz.mbn
 23102976  2016-02-10 10:00   NON-HLOS.bin
   80  2016-02-10 10:00   sec.dat
   252868  2016-02-10 10:00   sbl1.mbn
34304  2016-02-10 10:00   gpt_both0.bin
  324  2016-02-10 10:00   flashall
---------                     -------
 24844408                     10 files
$ mkdir dragonboard410c_bootloader_emmc_linux-46
$ unzip dragonboard410c_bootloader_emmc_linux-46.zip

fastboot modeに入るために基板上の(-)ボタン(s4)を押しながら電源を投入します.すぐにfastboot modeになるのでfastboot devicesコマンドで確認します.何も出てない場合は失敗しているので電源投入をやり直します.

$ sudo fastboot devices
b5d12d18        fastboot

デバイスが認識できているのが確認できたらflashall scriptで書き込みを開始します.書き込みを開始した後は(-)ボタン(s4)を離しても大丈夫そうです.

$ sudo ./flashall
target reported max download size of 268435456 bytes
sending 'partition' (33 KB)...
OKAY [  0.005s]
writing 'partition'...
OKAY [  1.451s]
finished. total time: 1.457s
target reported max download size of 268435456 bytes
sending 'hyp' (56 KB)...
OKAY [  0.005s]
writing 'hyp'...
OKAY [  0.011s]
finished. total time: 0.016s
target reported max download size of 268435456 bytes
sending 'modem' (22561 KB)...
OKAY [  0.732s]
writing 'modem'...
OKAY [  0.756s]
finished. total time: 1.488s
target reported max download size of 268435456 bytes
sending 'rpm' (151 KB)...
OKAY [  0.008s]
writing 'rpm'...
OKAY [  0.010s]
finished. total time: 0.018s
target reported max download size of 268435456 bytes
sending 'sbl1' (246 KB)...
OKAY [  0.011s]
writing 'sbl1'...
OKAY [  0.010s]
finished. total time: 0.021s
target reported max download size of 268435456 bytes
sending 'sec' (0 KB)...
OKAY [  0.004s]
writing 'sec'...
OKAY [  0.006s]
finished. total time: 0.010s
target reported max download size of 268435456 bytes
sending 'tz' (472 KB)...
OKAY [  0.017s]
writing 'tz'...
OKAY [  0.015s]
finished. total time: 0.033s
target reported max download size of 268435456 bytes
sending 'aboot' (726 KB)...
OKAY [  0.026s]
writing 'aboot'...
OKAY [  0.025s]
finished. total time: 0.052s
erasing 'boot'...
OKAY [  0.036s]
finished. total time: 0.037s
erasing 'rootfs'...
OKAY [  0.267s]
finished. total time: 0.267s
erasing 'devinfo'...
OKAY [  0.034s]
finished. total time: 0.034s

boot/root領域の書き込み

OSイメージのboot/root領域のデータを入手して書き込みます.
書き込みはfastboot modeにしてから行ってください.

$ wget http://builds.96boards.org/releases/dragonboard410c/linaro/debian/latest/linaro-jessie-alip-qcom-snapdragon-arm64-20160227-66.img.gz http://builds.96boards.org/releases/dragonboard410c/linaro/debian/latest/boot-linaro-jessie-qcom-snapdragon-arm64-20160227-66.img.gz http://builds.96boards.org/releases/dragonboard410c/linaro/debian/latest/MD5SUMS.txt
$ md5sum -c MD5SUMS.txt 2&>1 |grep 完了
boot-linaro-jessie-qcom-snapdragon-arm64-20160227-66.img.gz: 完了
linaro-jessie-alip-qcom-snapdragon-arm64-20160227-66.img.gz: 完了
$ sudo fastboot flash boot ./boot-linaro-jessie-qcom-snapdragon-arm64-20160227-66.img 
target reported max download size of 268435456 bytes
sending 'boot' (17480 KB)...
OKAY [  0.562s]
writing 'boot'...
OKAY [  0.329s]
finished. total time: 0.891s
$ sudo fastboot flash rootfs ./linaro-jessie-alip-qcom-snapdragon-arm64-20160227-66.img 
target reported max download size of 268435456 bytes
sending sparse 'rootfs' (262140 KB)...
OKAY [  9.309s]
writing 'rootfs'...
OKAY [ 18.304s]
sending sparse 'rootfs' (262140 KB)...
OKAY [  9.236s]
writing 'rootfs'...
OKAY [ 19.888s]
sending sparse 'rootfs' (262140 KB)...
OKAY [  9.255s]
writing 'rootfs'...
OKAY [ 19.759s]
sending sparse 'rootfs' (262140 KB)...
OKAY [  9.295s]
writing 'rootfs'...
OKAY [ 19.834s]
sending sparse 'rootfs' (262140 KB)...
OKAY [  9.317s]
writing 'rootfs'...
OKAY [ 19.828s]
sending sparse 'rootfs' (262140 KB)...
OKAY [  9.290s]
writing 'rootfs'...
OKAY [ 19.765s]
sending sparse 'rootfs' (59016 KB)...
OKAY [  2.118s]
writing 'rootfs'...
OKAY [  4.450s]
finished. total time: 179.649s

起動するとlxdeが起動してきます.sshdも起動してくるのでdhcpdの動いている環境でUSB-LANアダプタを接続すればヘッドレス環境で設定が可能です.avahiは動いてないのでipはポートスキャンなりarpなりで探してください.

$ sudo nmap -sP 192.168.2.200-255 --spoof-mac 00:90:cc:e8:0b:db

Starting Nmap 7.01 ( https://nmap.org ) at 2016-03-11 01:39 JST
Spoofing MAC address 00:90:CC:E8:0B:DB (Planex Communications)
Nmap scan report for 192.168.2.203
Host is up.
Nmap done: 56 IP addresses (1 host up) scanned in 19.15 seconds
$ sudo arp|grep 00:90:cc
192.168.2.214            ether   00:90:cc:e8:0b:db   C                     wlp3s0

ユーザ名はlinaroパスワードも同じです.

$ ssh linaro@192.168.2.202
$ uname -a
Linux linaro-alip 4.4.0-linaro-lt-qcom #1 SMP PREEMPT Sat Feb 27 04:55:16 UTC 2016 aarch64 GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 8.3 (jessie)
Release:        8.3
Codename:       jessie

ちなみに,セットアップ終了後のeMMCの容量はこのくらいです.

$ df /
Filesystem      1K-blocks    Used Available Use% Mounted on
/dev/mmcblk0p10   7260748 1814312   5120404  27% /

後は普通のDebianなのでsource listを日本に向けてUpdateしてほげりましょう.

/etc/apt/sources.list.d/の下はこんな感じ.後ろ2つは/etc/apt/sources.listと重複しているような?

$ find /etc/apt/sources.list.d/ -type f | xargs -n1 -I{} sh -c "echo \#-- {} ; cat {}"
#-- /etc/apt/sources.list.d/hwpack.qcom.list
deb http://repo.linaro.org/ubuntu/qcom-overlay jessie main
#-- /etc/apt/sources.list.d/linaro-overlay-repo.list
deb http://repo.linaro.org/ubuntu/linaro-overlay jessie main
deb-src http://repo.linaro.org/ubuntu/linaro-overlay jessie main
#-- /etc/apt/sources.list.d/hwpack.debian.list
deb http://ftp.debian.org/debian/ jessie main contrib non-free
#-- /etc/apt/sources.list.d/hwpack.backports.list
deb http://ftp.debian.org/debian/ jessie-backports main

]]>
https://matoken.org/blog/2016/03/11/dragonboard-410c-emmc-os-replacement-method-two-kinds-of-regions/feed/ 0
コマンドで添付ファイル付きメールを送る2つの方法 https://matoken.org/blog/2016/02/09/two-of-how-to-send-attachments-with-e-mail-in-the-mail-command/ https://matoken.org/blog/2016/02/09/two-of-how-to-send-attachments-with-e-mail-in-the-mail-command/#respond Tue, 09 Feb 2016 03:17:43 +0000 http://matoken.org/blog/?p=1129

Google+でmailコマンドで添付ファイル付きメールを送ろうとしている方の投稿のコメントにbase64でデコードして送るscriptを使ってますとか書いたのですが,これperl4でcgi全盛な大昔からやってる手法なので楽なものがあるのではと思い探してみました.

Debian stretch testingのs-nailを使う

Debian stretch testing/sid ではmailコマンドがbsd-mailxからs-nailに変わって添付ファイルオプションがあるようです.

 -a file     Attach the given file to the message.  The same filename conventions as described in the section COMMANDS apply: shell word expansion is
             restricted to the tilde ‘~’ and variables.  Shall file not be accessible but contain a ‘=’ character, then anything after the ‘=’ is assumed to
             specify the input character set and anything before ‘=’ the filename: this is the only option to specify the input character set (and don't per‐
             form any character set conversion) for text attachments from the command line, not using the ~@ tilde escape command.

こんな感じで使えました.

$ echo 'attach test(binary)' | mail -s "attach test mail" -a ./text.xz matoken@gmail.com

#はじめ.zipを送ろうとしてgmailサーバに弾かれました.そういえばそうだった……
##sendmail: 552 5.7.0 content and attachment content guidelines. xu1sm1469539pab.31 - gsmtp

普通にメール送るのに加えて-aオプションでファイルを指定する感じです.
オプションでSMTPサーバの指定も出来るようなのでMTAの設定をしていないような場合でも単体で使えそうです.

Debian jessieでbiabamを使う

s-nailはstretch testingからでjessieには入っていないようです.代わりに入っているのはbsd-mailxです.manをちょっと見た感じでは添付ファイルの扱いは載っていなさそう.でもきっと便利な何かがあるのでは?とapt-cache search mail attachとかして探してみるとbiabamというbash script製のものを発見.小さいし良さそうと試してみました.

biabam – bash attachment mailer

こんな感じで使えました.

$ sudo apt install biabam
$ echo 'attach test' | biabam ./test.xz -s "attach test from jessie" matoken@gmail.com

ちなみにmailコマンドで添付ファイルの方法を検索すると大抵mutt使う例が出てきますが,muttを既に設定済みの人でないと敷居が高いと思います.そういう場合に今回の方法はいいのではないかと思います.

しかし恐らく多国言語対応はして居なさそうなので日本語をSubjectやBODYに使う場合は素直にScriptを書いたほうがいいかもしれません…….
定形なら適当なMUAでメールのテンプレートファイルを作っておいて流し込んでmailコマンドに投げるようにしてもいいですね.




]]>
https://matoken.org/blog/2016/02/09/two-of-how-to-send-attachments-with-e-mail-in-the-mail-command/feed/ 0
雑なPadcastサーバを少しましにする https://matoken.org/blog/2016/02/04/to-a-little-better-the-sloppy-podcast-server/ https://matoken.org/blog/2016/02/04/to-a-little-better-the-sloppy-podcast-server/#respond Thu, 04 Feb 2016 13:39:54 +0000 http://matoken.org/blog/?p=1116

先日作ったPodcastサーバですがあれからずっと動かしていますが安定して動いているようです.雑さをましにするために少し修正しました.

プレイヤー部分はこんな感じで少し変わりました.

@reboot while true; do cvlc --ignore-config --extraintf=http --http-port=8081 --http-password='raspberry' ~/podcasts/todayspodcast.m3u --play-and-exit --norm-max-level=2.0 --sout='#transcode{acodec=mp3,ab=64,channels=1}:standard{access=http,mux=ts,dst=:8080}' ; done
40 * * * *      podracer ; cd ~/podcasts ; find . -mmin -1440 -type f -print0 | xargs -0n1 file | grep -i audio | cut -f1 -d: | xargs ls -1tr > ~/podcasts/todayspodcast.m3u
10 0 * * *  rm -rf ~/podcasts/`date --date '1 weeks ago' +\%F`
  • killせずに1周毎にVLCを呼ぶようにしてプレイリスト更新
  • Podcast取得を1時間に1度に変更
  • ボリュームのノーマライズ
  • ビットレートを64kにリアルタイムエンコーディング
  • プレイリストの作成も1時間に一度
  • プレイリストの順序を時間順にソート
  • プレイリストの内容はプレイリスト作成時から過去1日分(1440分)
  • 音泉の番組に対応(RSS化してpodracerに登録.簡単だけど公開すると怒られそうな気がする)

VLCのオプション

  • --ignore-config
    設定を読み込みません
  • --extraintf=http
    ウェブコントローラーを有効に
  • --http-port=8081
    ウェブコントローラーの待ち受けポートを8081番に
  • --http-password='raspberry'
    ウェブコントローラーの認証パスワードをraspberry
  • ~/podcasts/todayspodcast.m3u
    再生ファイル(プレイリストを指定)
  • --play-and-exit
    再生後終了する.これがないとプレイリストを再生後も起動しっぱなしになって次の周に入らない.(vlc://quitでも大丈夫だが,vlc://quitだとプレイリストにも表示される)
  • --norm-max-level=2.0
    ボリュームのノーマライズ.この値はもう少しいじったほうがいいかも?
  • --sout='#transcode{acodec=mp3,ab=64,channels=1}
    モノラル64kのmp3に変換している.Podcastを調べると殆どの番組が64kで一部40,96,128,160が混じっている.1日試したが32kでも大丈夫そう.
  • standard{access=http,mux=ts,dst=:8080}
    8080番ポートでHTTPライブストリーミング配信

VLCのオプションはmanにはあまり載ってなくて困っていたのですが,vlc -Hに大量のオプションが載っているのに気づいてからはかどりました.

$ vlc -h| tail -1
網羅的なヘルプを表示するためには、'-H'オプションを指定してください。
$ vlc -h | wc -l
372
$ vlc -H | wc -l
5674

その他細かいところで

  • 設置場所の変更
  • DNSに名前を登録して固定IPに(Androidでも名前でアクセス可能に)
  • 合わせてプレイリスト等のurlを名前に
  • hostnameの変更
  • sshd設定
  • iptable設定
  • OSの自動更新設定
  • watch dogの設定

といった辺りも設定しましたがこの辺は何時もの設定なので今回は省略.

と,こんな感じでだいたいやりたいことは出来たかなーという感じですが,VLCでなくMPD辺りで曲管理して再生,配信はまた別アプリでやったほうがいいような気もしてきました.VLCは1つで何でもできるしウェブコントローラーもあっていいのですが,MPDの方がリモート管理がしやすそうなので気が向いたらそっちも組むかもです.

今100円ショップのイヤホンを使って聞いているのでその部分が一番ストレスな感じです.

]]>
https://matoken.org/blog/2016/02/04/to-a-little-better-the-sloppy-podcast-server/feed/ 0
Raspberry Piの小さな液晶のPiTFTを仮想画面スクロールで広く使いたかったけど挫折 https://matoken.org/blog/2016/02/04/pitft-of-raspberry-pi-could-not-be-used-widely-in-the-virtual-screen-scrolling/ https://matoken.org/blog/2016/02/04/pitft-of-raspberry-pi-could-not-be-used-widely-in-the-virtual-screen-scrolling/#respond Wed, 03 Feb 2016 15:33:41 +0000 http://matoken.org/blog/?p=1111

IMGP2681

Raspberry Pi用でAdaruit製のGPIO経由(SPI)で接続する320×240 2.8"のタッチスクリーン付きのディスプレイ.動作には専用のドライバが必要.ドライバはsourceの他にAdaruitがRasbianに組み込み済みのものと,ビルド済みのリポジトリが用意されている.

Afafruit謹製のOSイメージ入手

通常のRasbianにAdafruitのリポジトリを追加する方法と,それを反映済みのOSイメージを使う方法(と自分でbuildする方法)がある.ここでは手順の少ないAfafruit謹製のOSイメージを利用する.こちらからwheesy/jessieのものが入手可能.

今回はjessie(2015-09-24-raspbian-jessie-pitft28r.zip)を利用.hashや署名は見当たらず.手元ではこんな感じだった.

$ md5sum 2015-09-24-raspbian-jessie-pitft28r.zip
e78c764abbd3426d63d9ae7180fcdfa8  2015-09-24-raspbian-jessie-pitft28r.zip
$ sha512sum 2015-09-24-raspbian-jessie-pitft28r.zip
a6be01345be6030aaf0bc85293a946be4db54e80a42dbbab0034ddff3c21e842fc10f7f066acd605ffd9d16b6d43e14631e7d5a969a7f2a0869d7d00f013d8fd  2015-09-24-raspbian-jessie-pitft28r.zip

SD Cardデバイス確認

$ dmesg | tail -3
[793679.349596] mmc0: new high speed SDHC card at address 59b4
[793679.350315] mmcblk0: mmc0:59b4 USDU1 14.9 GiB
[793679.351411]  mmcblk0: p1 p2 p3
$ sudo fdisk -l /dev/mmcblk0
Disk /dev/mmcblk0: 15 GiB, 16088301568 bytes, 31422464 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xb3c5e39a
 
Device         Boot    Start      End  Sectors  Size Id Type
/dev/mmcblk0p1          8192   131071   122880   60M  c W95 FAT32 (LBA)
/dev/mmcblk0p2        131072 27228158 27097087 12.9G 83 Linux
/dev/mmcblk0p3      27228159 31422463  4194305    2G 83 Linux
$ mount|grep /dev/mmcblk0

パーティション情報の確認と消去

$ sudo wipefs /dev/mmcblk0
offset               type
----------------------------------------------------------------
0x1fe                dos   [partition table]
 
$ sudo wipefs -a /dev/mmcblk0
/dev/mmcblk0: 2 bytes were erased at offset 0x000001fe (dos): 55 aa
/dev/mmcblk0: calling ioctl to re-read partition table: 成功です
$ sudo wipefs /dev/mmcblk0

※Mac/Windowsではこの辺を使うといいと思う.

イメージ書き込み

$ unzip -p 2015-09-24-raspbian-jessie-pitft28r.zip | pv | sudo ionice -c2 dd of=/dev/mmcblk0 bs=4M
4.03GiB 0:05:58 [11.5MiB/s] [                                                                                                              <=>                         ]
0+36176 レコード入力
0+36176 レコード出力
4325376000 バイト (4.3 GB) コピーされました、 452.676 秒、 9.6 MB/秒
$ sync
$ sync
$ mount|grep /dev/mmcblk0

コマンドの意味などはこちらを

書き込んだSD CardをPiTFTの繋がったRaspberry Piに挿入して起動するとXが自動起動してLXDEにpiユーザで自動ログインした状態になる.

リモート接続(ssh)

Rasbian jessieは初期状態でavahi&sshが起動しているのでIPアドレスを調べなくても接続できて便利.

$ ssh pi@raspberrypi.local -CY

リモート接続(vnc)

x11vncを使ってvinoみたいに既に起動しているX画面(DISPLAY=:0)を転送

$ sudo apt install x11vnc
$ x11vnc -display :0 &

リポジトリサーバの日本への切り替えとパッケージのアップデート

$ sudo apt edit-sources
$ cat /etc/apt/sources.list
deb http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian/  jessie main contrib non-free rpi
deb-src http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian/  jessie main contrib non-free rpi
deb http://apt.adafruit.com/raspbian/ jessie main
$ sudo apt update && sudo apt upgrade

Xの確認

$ ps -ef|grep X
root       557   550  0 05:50 tty7     00:00:01 /usr/bin/X :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
pi         733   698  0 05:50 ?        00:00:00 /usr/bin/lxsession -s LXDE-pi -e LXDE
pi         837   733  1 05:51 ?        00:00:02 lxpanel --profile LXDE-pi
pi         838   733  0 05:51 ?        00:00:01 pcmanfm --desktop --profile LXDE-pi
pi         968   942  0 05:55 pts/0    00:00:00 grep --color=auto X
$ DISPLAY=:0 xrandr --verbose
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 320 x 240, current 320 x 240, maximum 320 x 240
default connected 320x240+0+0 (0x4f) normal (normal) 0mm x 0mm
        Identifier: 0x4e
        Timestamp:  35831
        Subpixel:   unknown
        Clones:
        CRTC:       0
        CRTCs:      0
        Transform:  1.000000 0.000000 0.000000
                    0.000000 1.000000 0.000000
                    0.000000 0.000000 1.000000
                   filter:
  320x240 (0x4f)  0.000MHz *current
        h: width   320 start    0 end    0 total  320 skew    0 clock   0.00KHz
        v: height  240 start    0 end    0 total  240           clock   0.00Hz
$ ls -l /dev/fb*
crw-rw---- 1 root video 29, 0 Sep 24 17:32 /dev/fb0
crw-rw---- 1 root video 29, 1 Feb  3 05:52 /dev/fb1

PiTFT分のXだけが起動していて,ディスプレイ番号は:0のよう.解像度は320x240だけ.モニタ名はdefault?

XRandRのpanningを使って画面をスクロールして広く使う(失敗)

やっと本題.
xrandrのmanを見るとpanningというそれらしい設定が.

       Per-output options
 
       --panning widthxheight[+x+y[/track_widthxtrack_height+track_x+track_y[/border_left/border_top/border_right/border_bottom]]]
              This option sets the panning parameters.  As soon as panning is enabled, the CRTC position can change with every pointer move.  The first four param‐
              eters specify the total panning area, the next four the pointer tracking area (which defaults to the same area). The last four parameters specify the
              border and default to 0. A width or height set to zero disables panning on the according axis. You typically have to set the screen  size  with  --fb
              simultaneously.
 
       --transform a,b,c,d,e,f,g,h,i
              Specifies a transformation matrix to apply on the output. Automatically a bilinear filter is selected.  The mathematical form corresponds to:
                     a b c
                     d e f
                     g h i
              The transformation is based on homogeneous coordinates. The matrix multiplied by the coordinate vector of a pixel of the output gives the transformed
              coordinate vector of a pixel in the graphic buffer.  More precisely, the vector (x y) of the output pixel is extended to 3 values (x y w), with 1  as
              the  w coordinate and multiplied against the matrix. The final device coordinates of the pixel are then calculated with the so-called homogenic divi‐
              sion by the transformed w coordinate.  In other words, the device coordinates (x' y') of the transformed pixel are:
                     x' = (ax + by + c) / w'   and
                     y' = (dx + ey + f) / w'   ,
                     with  w' = (gx + hy + i)  .
              Typically, a and e corresponds to the scaling on the X and Y axes, c and f corresponds to the translation on those axes, and g, h, and i are  respec‐
              tively  0,  0 and 1. The matrix can also be used to express more complex transformations such as keystone correction, or rotation.  For a rotation of
              an angle T, this formula can be used:
                     cos T  -sin T   0
                     sin T   cos T   0
                      0       0      1
              As a special argument, instead of passing a matrix, one can pass the string none, in which case the default values are used (a  unit  matrix  without
              filter).
 
       --scale xxy
              Changes  the  dimensions  of the output picture. Values superior to 1 will lead to a compressed screen (screen dimension bigger than the dimension of
              the output mode), and values below 1 leads to a zoom in on the output. This option is actually a shortcut version of the --transform option.
 
       --scale-from wxh
              Specifies the size in pixels of the area of the framebuffer to be displayed on this output.  This option  is  actually  a  shortcut  version  of  the
              --transform option.
 
       --primary
              Set the output as primary.  It will be sorted first in Xinerama and RANDR geometry requests.

ちょっと複雑そう.xrandrのGUIの皮のarandr/lxrandrで設定できると便利なんだろうけど実装された機能が少なくてこの当たりの設定は使えない感じで残念.
#arandrは外部モニタの設定や解像度の変更にはよく使ってます.

XRandRを手動で設定してmodeの登録を試みる

cvtコマンドで取得した値をxrandrに渡すといいはずだけどうまく行かない.

$ cvt 800 600
# 800x600 59.86 Hz (CVT 0.48M3) hsync: 37.35 kHz; pclk: 38.25 MHz
Modeline "800x600_60.00"   38.25  800 832 912 1024  600 603 607 624 -hsync +vsync
$ xrandr --newmode "800x600_60.00"   38.25  800 832 912 1024  600 603 607 624 -hsync +vsync
$ xrandr --addmode default 800x600_60.00
xrandr: cannot find output "default"
$ DISPLAY=:0 xrandr --addmode default 800x600_60.00
xrandr: Failed to get size of gamma for output default
xrandr: cannot find mode "800x600_60.00"
$ DISPLAY=:0 xrandr --addmode default 800x600_60.00
xrandr: Failed to get size of gamma for output default
xrandr: cannot find mode "800x600_60.00"

PC(i915なDebian stretch amd64)では想定した動作になった.
この例では存在するモードよりも広い1904×720のモードを追加した後,画面のモードを640×480にして仮想スクリーンを1904×720にしている.マウスカーソルを端に持って行くと自動スクロールする.

$ xrandr | grep LVDS1 -A5
LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 277mm x 156mm panning 1366x768+0+0
   1366x768      60.00*+
   1360x768      59.80    59.96  
   1024x768      60.00  
   800x600       60.32    56.25  
   640x480       59.94  
$ cvt 1904 720
# 1904x720 59.97 Hz (CVT) hsync: 44.86 kHz; pclk: 111.25 MHz
Modeline "1904x720_60.00"  111.25  1904 2000 2192 2480  720 723 733 748 -hsync +vsync
$ cvt 1904 720
# 1904x720 59.97 Hz (CVT) hsync: 44.86 kHz; pclk: 111.25 MHz
Modeline "1904x720_60.00"  111.25  1904 2000 2192 2480  720 723 733 748 -hsync +vsync
$ xrandr --newmode "1904x720_60.00"  111.25  1904 2000 2192 2480  720 723 733 748 -hsync +vsync
$ xrandr --addmode VGA1 1904x720_60.00
$ xrandr --output LVDS1 --mode 640x480 --panning 1904x720

そもそもpanningはmodeを追加しなくても使えるようだ.

$ xrandr --output LVDS1 --mode 1366x768 --panning 2000x768
$ xrandr --output LVDS1 --mode 1366x768 --panning 2732x1536 --scale 2x2

ということはこれだけでいいはずだけどモニタ名がうまく行けてない.モニタ名をドライバでちゃんと設定してない?

$ DISPLAY=:0 xrandr default --mode 320x240 --panning 800x600
xrandr: unrecognized option 'default'
Try 'xrandr --help' for more information.$ DISPLAY=:0 xrandr default --mode 320x240 --panning 800x600
xrandr: unrecognized option 'default'
Try 'xrandr --help' for more information.

Adafruitのフォーラムに同じ質問があったけど動いて無さそう.

もう少し叩いてみたらモニタ名はdefaultでOKのよう.320×240より小さなmodeを作ってみてもダメ.
xrandrコマンドを引数無しで実行した時のmaximum 320 x 240がいけないのかも.PCではmaximum 32767 x 32767と恐らくビデオカードの最大解像度であろう値が表示される.VRAMを増やしたりすると行けるけるのかもしれない.

$ DISPLAY=:0 xrandr
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 320 x 240, current 320 x 240, maximum 320 x 240
default connected 320x240+0+0 0mm x 0mm
   320x240        0.00*
$ DISPLAY=:0 xrandr --output default --auto --mode 320x240 --panning 800x600
xrandr: Failed to get size of gamma for output default
xrandr: screen cannot be larger than 320x240 (desired size 800x600)
$ DISPLAY=:0 xrandr --output default --auto --mode 160x120 --panning 320x240
xrandr: cannot find mode 160x120
$ cvt 160 120
# 160x120 50.08 Hz (CVT 0.02M3) hsync: 6.51 kHz; pclk: 1.25 MHz
Modeline "160x120_60.00"    1.25  160 168 176 192  120 123 127 130 -hsync +vsync
$ xrandr --newmode "160x120_60.00"    1.25  160 168 176 192  120 123 127 130 -hsync +vsync
$ DISPLAY=:0 xrandr --newmode "160x120_60.00"    1.25  160 168 176 192  120 123 127 130 -hsync +vsync
xrandr: Failed to get size of gamma for output default
$ DISPLAY=:0 xrandr --addmode default 160x120_60.00
xrandr: Failed to get size of gamma for output default
$ DISPLAY=:0 xrandr
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 320 x 240, current 320 x 240, maximum 320 x 240
default connected 320x240+0+0 0mm x 0mm
   320x240        0.00*
   160x120_60.00  50.08  
pi@raspberrypi ~ $ DISPLAY=:0 xrandr --output default --auto --mode 160x120_60.00 --panning 320x240
xrandr: Failed to get size of gamma for output default
xrandr: Configure crtc 0 failed

恐らくこれ以上はsourceを修正しないとダメだと思う.

fbcpを利用してRaspberry Pi標準のディスプレイをコピーして利用

フレームバッファをコピーするfbcpを利用する方法.便利だけどタッチパネル機能が使えない.

内蔵が/dev/fb0でPiTFTが/dev/fb1になっているので通常のRaspberry Piで行った設定をそのままPiTFTの画面に映すことが出来る.
フレームバッファのコピーなのでXだけでなくコンソール利用時にも使える.

fbcpのbuild

$ sudo apt install cmake
$ git clone https://github.com/tasanakorn/rpi-fbcp.git
$ cd rpi-fbcp
$ mkdir build
$ cd build
$ cmake ..
$ make

fbcpコマンドを適当な場所に置く.

$ sudo cp fbcp /usr/local/bin/

/dev/fb1を指定しているファイルを退避して,起動時にfbcpを起動するよう設定して再起動.

$ sudo mv /etc/X11/xorg.conf.d/99-fbdev.conf ~pi/99-fbdev.conf
$ sudo sed -i 's/exit/\/usr\/local\/bin\/fbcp \&\n\nexit/g' /etc/rc.local
$ sudo reboot

コンソールの途中からfbcpが動作してXも表示される.解像度は656×416になっている.もっと高解像度にもできるが使いやすさを考えるとこのくらいでいいと思う.

$ DISPLAY=:0 xrandr --verbose
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 656 x 416, current 656 x 416, maximum 656 x 416
default connected 656x416+0+0 (0x4f) normal (normal) 0mm x 0mm
        Identifier: 0x4e
        Timestamp:  19289
        Subpixel:   unknown
        Clones:    
        CRTC:       0
        CRTCs:      0
        Transform:  1.000000 0.000000 0.000000
                    0.000000 1.000000 0.000000
                    0.000000 0.000000 1.000000
                   filter:
  656x416 (0x4f)  0.000MHz *current
        h: width   656 start    0 end    0 total  656 skew    0 clock   0.00KHz
        v: height  416 start    0 end    0 total  416           clock   0.00Hz

過去の試み

]]>
https://matoken.org/blog/2016/02/04/pitft-of-raspberry-pi-could-not-be-used-widely-in-the-virtual-screen-scrolling/feed/ 0
aptコマンドのedit-sourcesオプションが便利 https://matoken.org/blog/2016/02/01/convenient-edit-sources-option-of-apt-command/ https://matoken.org/blog/2016/02/01/convenient-edit-sources-option-of-apt-command/#comments Mon, 01 Feb 2016 10:25:20 +0000 http://matoken.org/blog/?p=1102

Rasbianのパッケージサーバにjaistを指定していたのだけど最近遅いのでmirror listを見て

$ w3m -dump https://www.raspbian.org/RaspbianMirrors|grep -i japan -A1
Asia^*    Japan       JAIST                    (http|rsync)://ftp.jaist.ac.jp/pub/
                                               Linux/raspbian-archive/raspbian
--
Asia^*    Japan       WIDE Project Tsukuba NOC raspbian/raspbian/
                                               rsync://ftp.tsukuba.wide.ad.jp/
--
Asia^*    Japan       Yamagata University      http://ftp.yz.yamagata-u.ac.jp/pub/
                                               linux/raspbian/raspbian/

/etc/apt/sources.listをWIDEに変更した.

-deb http://ftp.jaist.ac.jp/pub/Linux/raspbian-archive/raspbian/ jessie main contrib non-free rpi
-deb-src http://ftp.jaist.ac.jp/pub/Linux/raspbian-archive/raspbian/ jessie main contrib non-free rpi
+deb http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian/  jessie main contrib non-free rpi
+deb-src http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian/  jessie main contrib non-free rpi

ところでaptコマンドのedit-sourcesオプションが便利なのでぜひ使うべき.visudoとかみたいに間違えると教えてくれる.

$ sudo apt edit-sources
E: Type 'eb' is not known on line 3 in source list /etc/apt/sources.list
Failed to parse /etc/apt/sources.list. Edit again?  [Y/n]

引数を付けて/etc/apt/sources.list.d/以下の編集も出来る

$ ls /etc/apt/sources.list.d/
google-chrome.list  gyazo_gyazo-for-linux.list  owncloud-client.list
$ sudo apt edit-sources owncloud-client

Debian jessie以降,Rasbian jessie以降,Ubuntu vivid(15.04)以降でそれぞれ利用可能だと思う.

apt (0.9.13.1) unstable; urgency=low
 
  [ Colin Watson ]
  * fix "apt-get  --purge build-dep" (closes: #720597)
  * fix regression that APT::Keep-Fds is not honored (closes: #730490)
 
  [ Michael Vogt ]
  * add "-f" option to "build-dep" as sbuild is using it to fix
    regression with cross-building (LP: #1255806)
  * add autopkgtest support for the integration testsuite
  * merge mvo/feature/short-list
  * merge mvo/feature/edit-sources
  * fix segfault in pkgDepCache::SetCandidateRelease() (closes: #709560)
  * reset terminal on error (closes: #730795)
  * fix apport report writing (LP: #1254499)
 
 -- Michael Vogt <mvo@debian.org>  Fri, 29 Nov 2013 20:50:17 +0100


]]>
https://matoken.org/blog/2016/02/01/convenient-edit-sources-option-of-apt-command/feed/ 1
Raspberry Piで雑いpodcastサーバを作った https://matoken.org/blog/2016/01/31/i-made-a-sloppy-podcast-server-in-the-raspberry-pi/ https://matoken.org/blog/2016/01/31/i-made-a-sloppy-podcast-server-in-the-raspberry-pi/#comments Sun, 31 Jan 2016 12:14:42 +0000 http://matoken.org/blog/?p=1092

IMGP2678

先日試したpodracer

毎日実行して今日の分をまとめて再生して消してというように使う感じなのかもしれません.

ということで自動取得,自動再生すると家庭内ラジオのようにできるのではと思い試してみました.

環境はRaspberry Pi 1B (512MB)Rasbian jessieを導入したもので有線LAN 利用です.

導入パッケージ

podcast の取得のためにpodracer,プレイリストの配信にboaを利用,音声配信の為にvlc-noxを導入しました.

$ sudo apt install podracer boa vlc-nox

podcast 取得の準備

を参考にpodracerの設定をして下さい.~/.podracer/subscriptionsを用意した後1度catchup modeで実行しておきます.

$ podracer -c

これでRSS Feedをひと舐めして過去のpodcastを取得しないようにします.

VLC での配信テスト

以下の例ではpodracerで作成された今日のプレイリストをそのままhttp 8080ポートで配信して更にloopさせています.

$ cvlc  ~/podcasts/`date +\%F`/`date +\%F`-podcasts.m3u --sout '#standard{access=http,mux=ts,dst=:8080}' --loop

この状態で再生したい端末で $ cvlc http://raspberrypi.local:8080/ とか mplayer http://raspberrypi.local:8080/ などとしてアクセスすると再生されるはずです.
1曲毎に停まってしまい再度再生し直す必要がありますがこれは後で解決することにします.

VLC の設定

VLCで配信しますが,コントローラーも利用したいです.--extraintf=http オプションでwebコントローラーが利用できます.規定値では localhost 以外からアクセスできないので家のネットワークのどこからでもコントロールできるように /usr/share/vlc/lua/http/.hosts に利用可能なネットワークを登録しておきます.

192.168.1.0/24
192.168.2.0/24

以下のように実行するとwebコントローラーが8081ポートで起動します.パスワードは raspberry です.適当なブラウザで http://:raspberry@raspberrypi.local:8081/ な感じでアクセスするとコントローラが利用できると思います.

$ cvlc --extraintf=http --http-port=8081 --http-password='raspberry' ~/podcasts/`date +\%F`/`date +\%F`-podcasts.m3u --sout '#standard{access=http,mux=ts,dst=:8080}' --loop

Screenshot_2016-01-31-19-04-03

パスワードを設定しないとパスワードの設定を促す画面が表示されて利用できないようです.

http の設定(プレイリストの作成)

boaの標準では /var/www 以下がDocumentRootになっています.ここにメニュー用の index.html とプレイリストの podcast.m3u を用意しておきます.

権限は www-data.www-data なので,以下のような感じで権限を設定して編集するといいかもしれません.

$ sudo chown www-data.www-data /var/www
$ sudo -u www-data vi /var/www/index.html
   :
  • /var/www/index.html の例
<html>
<body>
<ul>
<li><a href="./podcast.m3u">m3u</a></li>
<li><a href="http://:raspberry@192.168.2.200:8081/">VLC control</a></li>
</ul>
</body>
</html>

※AndroidではAvahiでの名前解決がうまく行かないのでIP アドレスで書いています.環境に合わせて変更して下さい.

  • /var/www/podcast.m3u の例
http://192.168.2.200:8080/
http://192.168.2.200/podcast.m3u

1行目だけだと1番組分で再生が停止してしまうので,2行目で自分自身を呼び出して再起しています.これで2番組以降でも続けて再生されます.
※AndroidではAvahiでの名前解決がうまく行かないのでip アドレスで書いています.環境に合わせて変更して下さい.

自動起動とpodcast更新処理

crontab で起動時に自動的に再生が始まるように&定期的にpodcast更新&再生リスト更新&古いpodcastの削除処理をします.

crontab -e コマンドで編集します.

@reboot cvlc --extraintf=http --http-port=8081 --http-password='raspberry' ~/podcasts/`date +\%F`/`date +\%F`-podcasts.m3u --sout '#standard{access=http,mux=ts,dst=:8080}' --loop
3 */6 * * *     podracer;killall vlc;cvlc --extraintf=http --http-port=8081 --http-password='raspberry' ~/podcasts/`date +\%F`/`date +\%F`-podcasts.m3u --sout '#standard{access=http,mux=ts,dst=:8080}' --loop
10 0 * * *  rm -rf ~/podcasts/`date --date '1 weeks ago' +\%F`

1行目は @reboot で起動時にVLCを自動起動します.
2行目は6時間毎にpodcastを更新してVLCを起動しなおしています.
3行目で1週間前のpodcastデータを削除しています.

利用方法

ウェブブラウザで Raspberry Pi にアクセスします.

http://raspberrypi.local

以下のようなメニューが出て来ます.

Screenshot_2016-01-31-20-49-47

• m3u
• VLC control

m3u をクリックするとプレイリストがダウンロードされます.VLC 等の関連付けられたアプリケーションなどで再生できると思います.
Screenshot_2016-01-31-19-03-53

VLC control をクリックするとVLCのウェブコントローラーが表示されます.URLに認証情報を埋め込んでいるので認証はスキップされます.

問題点や改善点など

  • ブロードキャスト配信の断念. はじめブロードキャスト配信を試したのですが,かなりの頻度でパケットロスしてそのたびに音が途切れました.音が途切れるのはかなりストレスなので諦めました.プレイリストがなくても連続再生可能なのは良かったのですが…….
  • podcast更新時の番組強制終了.更新時にVLCをkillしています.番組の途中で切れてしまうので改善したいです.
  • podcast の音量や音質を揃える.試しにmp3/128kbpsや64kbpsにリアルタイムエンコーディングしつつ配信も試してみましたが Raspberry Pi でもCPU 25%前後なので実用的な感じです.
    帯域を絞ったストリームも同時配信するようにして外で聴きやすくするのもありかもしれません.
  • VLC から他のアプリケーションに変更.今回お手軽なので VLC を利用しましたが Gstreamer や ffmpeg などを試すのもありかもしれません.
  • スピーカーでも再生.環境によっては同時にスピーカーで再生してもいいかもしれません.
  • 番組情報の配信.今は未知のアーティストなどと表示される.アートワークも含めて改善したい.
    Screenshot_2016-01-31-20-50-06
  • 更新間隔の調整.ニュース番組など定時のある番組があるのでそれらに合わせて更新処理を行うようにすると便利かもしれません.
  • 名前解決.AndroidでAvahiが利用できないので家の中のDNSサーバに名前を登録してあげると便利かもしれません.
  • pifmを使ってFMラジオでも視聴.日本だと電波法違反になるので自重しました.


現在は主にAndroidアプリのVLCで再生しています.AndroidとPCはBluetooth A2DPで繋がっていて,PCで聞いています.PCから離れるときはAndroidにイヤホンジャックを差し替えるとシームレスに移動できます.

20160201_01:02:04-5807

]]>
https://matoken.org/blog/2016/01/31/i-made-a-sloppy-podcast-server-in-the-raspberry-pi/feed/ 1
Rasbian jessie で watchdog を設定する https://matoken.org/blog/2016/01/30/setting-the-watchdog-in-raspbian-jessie/ https://matoken.org/blog/2016/01/30/setting-the-watchdog-in-raspbian-jessie/#respond Sat, 30 Jan 2016 12:38:55 +0000 http://matoken.org/blog/?p=1090

Rasbian jessie 環境でも設定したのでメモとして.

パッケージの導入

$ sudo apt install watchdog

設定ファイル修正

/etc/watchdog.conf を以下のように編集

-#min-memory              = 1
+min-memory              = 5000
 
-#watchdog-device       = /dev/watchdog
+watchdog-device        = /dev/watchdog

min-memory はページサイズ.今回は4096*5000で約20MB.このサイズ(swapを含めた容量)を切ったら再起動するはず.大きいような気もするけどまずは動作確認のためにこのくらいにしてみる.

/etc/default/watchdog を以下のような感じに編集して bcm2708_wdog モジュールを読みこむようにする.

-watchdog_module="none"
+watchdog_module="bcm2708_wdog"

起動設定

$ sudo update-rc.d watchdog defaults
$ sudo update-rc.d watchdog enable

動作確認

再起動して

$ sudo reboot

モジュールの読み込み,デバイスの確認,デーモンの確認をする.

$ lsmod|grep dog
bcm2708_wdog            3926  1
$ ls -l /dev/watchdog
crw------- 1 root root 10, 130  1月 26 23:32 /dev/watchdog
$ ps -ef|grep dog
root       642     1  0 23:32 ?        00:00:00 /usr/sbin/watchdog

問題無さそうなら swap を無効にしてファイルシステムを read only や sync を有効にしておいてから Forkbomb で動作確認をしてみる.以下の例ではbashでのForkbomb

$ sudo swapoff -a
$ sync
$ sudo mount -o remount,ro /boot
$ sudo mount -o remount,sync /
$ :(){ :|:& };:

うまく再起動が走ったら後は /etc/watchdog.conf を詰めていく.

kernel panic 時の設定

bcm2708_wdog を使っているのでkernel panic 時にも watchdog は効くはずだけど念の為設定しておく.

/etc/sysctl.conf に以下を追記

kernel.panic = 180
kernel.panic_on_oops = 1

sysctl や再起動で反映.

$ sudo sysctl -p
kernel.panic = 60
kernel.panic_on_oops = 1

]]>
https://matoken.org/blog/2016/01/30/setting-the-watchdog-in-raspbian-jessie/feed/ 0
デジモノステーション2016年2月号付録の0SIMをRaspberry Piで試す https://matoken.org/blog/2015/12/29/try-0sim-of-dejimonostation-magazine-in-february-2016-degree-in-raspberry-pi/ https://matoken.org/blog/2015/12/29/try-0sim-of-dejimonostation-magazine-in-february-2016-degree-in-raspberry-pi/#comments Mon, 28 Dec 2015 23:21:27 +0000 http://matoken.org/blog/?p=1063 デジモノステーション 2016年2月号に0SIM by So-net というものが付録で付いてきて一部で流行っています.
雑誌「デジモノステーション」最新号 – DIGIMONO!(デジモノ!)

IMG_20151229_022627IMG_20151229_022636

これはこの雑誌を買って付いてきた付録のSIMを使うと雑誌代(620円)だけで開通手続き手数料無料で月あたり500MB迄無料で利用できるというもの.勿論他にSIMを刺す端末は必要です.

【0SIM by So-net】 詳細
形状:nanoSIM 規格:0SIM by So-net 種類:データ通信専用
データ量と料金(2段階定額)
0MB~499MB:0円
500MB ~ 2047MB:100円~1500円
2048MB ~:1600円
速度制限:なし(ただし5GBまで)/ NTTドコモ 4G LTE(下り最大225Mbps)
開通期限:2016年2月24日

上限もあるのでうっかり使いすぎても安心感があります.ちなみに上限をよく超えるようだと別のプランにしたほうがお得です.
一人で複数契約は出来ないのでたくさん買って500MBごとに差し替えて使うと言ったことは出来ない,3ヶ月利用しないと自動解約されるようなので寝かせておくことも出来ないよう.
普通に使うとあっという間に500MB超えちゃうでしょうけど使いようによっては便利に使えそう(気象センサのデータを送るとかなら余裕).ということで試してみたかったのですがここは鹿児島.都内から最低でも2日遅れなので試せないでいました.昨日やっとコンビニで入手出来たので試してみました.

ちなみにAmazonでは売り切れでマーケットプレイス扱いの物しか無いようです.その中で安いものはSIMなしと書かれているので注意しましょう.

今回はUSBモデムとして以前500円ほどで買った Docomo L-02C を Rasbian jessie を導入した Raspberry Pi 2B に接続して wvdial で接続しました.このモデムは結構電気を食うらしく電源がある程度大容量でないととても不安定になります.今回は秘密結社オープンフォース河野総統謹製の RaspberryPot という GPIO 経由での電源を利用しました.RaspberryPot は現在恐らく入手出来ません.Raspberry Hubu の電源部分を切り出したものなので Raspberry Hubu でも同じことが出来ます.
#ちなみに Pi で動かす前に Debian testing stretch amd64 な NotePC でも同様の設定で動くのを確認しています.Debian oldstable 以降なら全部同じ手順で行けると思います.


RaspberryHabu – FABLIB Wiki – FABLIB – OSDN
秘密結社オープンフォース

IMG_20151229_071104

開通手続き

次のページから開通手続きを行います.開通手続きの期限は2016年02月24日.
http://lte.so-net.ne.jp/r/0sim/a/

ログイン情報はSIMの台紙に書かれています.
IMG_20151229_022855

必要なソフトウェアの導入

$ sudo apt update && sudo apt upgrade
$ sudo apt install cu wvdial usb-modeswitch

<追記>
※必要なソフトウェアの導入にusb-modeswitchパッケージを追加
</追記>

利用ユーザ pidialout グループへの登録

この手続きをしないと,ダイヤル時など毎回 sudo しないといけません.

$ sudo addgroup pi dialout

※反映には要ログインしなおし

Docomo L-02C への APN登録

モデムへの接続と動作確認

/dev/ttyUSB2 部分は dmesg|tailなどとして確認して下さい.モデムの他に何も接続していなければ ttyUSB0~ttyUSB3 の4つのデバイスが確認できるはずです.

% cu -l /dev/ttyUSB2 -s 115200
Connected.
atz
OK

現在のAPN確認

AT+CGDCONT?
+CGDCONT: 1,"IP","mopera.net",,0,0,0
+CGDCONT: 11,"IP","mopera.net",,0,0,0

OK

APN(so-net.jp)を設定

AT+CGDCONT=1,"IP","so-net.jp"
OK

※次のようにして複数のAPNを設定することも可能

AT+CGDCONT=2,"IP","lte.nttplala.com"
OK
AT+CGDCONT=3,"IP","mineo-d.jp"
OK

APNが登録できたか確認

AT+CGDCONT?
+CGDCONT: 1,"IP","so-net.jp",,0,0,0
+CGDCONT: 11,"IP","mopera.net",,0,0,0
OK

設定の書き込み

ATZ0
OK

モデムから切断

~.

Disconnected.

ダイヤルアップのために wvdial の設定

/etc/wvdial.conf に以下を追記.

[Dialer 0sim]
Modem Type = Analog Modem
Phone = *99***1#
Carrier Check = no
Auto Reconnect = yes
Stupid Mode = yes

ISDN = 0
Init1 = ATZ
Init2 = ATH
Init3 = AT+CGDCONT?
Init4 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Dial Command = ATD
Modem = /dev/ttyUSB2
Baud = 115200

Username = nuro
Password = nuro

接続

$ wvdial 0sim

接続確認

$ w3m -dump http://ifconfig.me/all
ip_addr: 118.241.XXX.XXX
remote_host: XXXXXXXXXX.ap.nuro.jp
user_agent: w3m/0.5.3+debian-19
port: 44286
lang: ja;q=1.0, en;q=0.5
connection: 
keep_alive: 
encoding: gzip, compress, bzip, bzip2, deflate
mime: text/html, text/*;q=0.5, image/*, application/*, audio/*, video/*, x-scheme-handler/*, x-content/*, inode/*
charset: 
via: 
forwarded: 

利用状況確認

対のページからログインして利用状況が確認できます.また,400MB を超えるとメールでお知らせも来るらしいです.
ユーザWebメインメニュー

20151229_07:12:50-10076

ということで暫く試してみたいと思います.

※Amazonで雑誌を買う場合はSIMなしのものもあるのでよく確認して購入しましょう.

関連URL

<追記>

Twitterで/dev/ttyUSBnが見つからないという書き込みを見て導入パッケージが足りなかったのに気づきました.これが足りないとUSBモデム接続時のdmesgで以下のようにCD-ROMのsr0デバイスが出て来てttyUSBnは出てきません.

$ dmesg | tail
[417400.989925] usb 2-1.1: Product: docomo L02C
[417400.989927] usb 2-1.1: Manufacturer: NTT DOCOMO, INC.
[417400.989928] usb 2-1.1: SerialNumber: 353168046719530
[417400.990982] usb-storage 2-1.1:1.0: USB Mass Storage device detected
[417400.991062] scsi host11: usb-storage 2-1.1:1.0
[417401.988387] scsi 11:0:0:0: CD-ROM            LG       Autorun          2.00 PQ: 0 ANSI: 0
[417401.988771] scsi 11:0:0:0: Attached scsi generic sg2 type 5
[417401.999991] sr 11:0:0:0: [sr0] scsi-1 drive
[417402.000001] cdrom: Uniform CD-ROM driver Revision: 3.20
[417402.000257] sr 11:0:0:0: Attached scsi CD-ROM sr0

この時のベンダーID:プロダクトIDは1004:61ddです.

$ lsusb|grep LG
Bus 002 Device 027: ID 1004:61dd LG Electronics, Inc. 

この場合usb-modeswitchパッケージを導入して,

$ sudo apt install usb-modeswitch

USBモデムを接続し直すと出てきます.

$ dmesg | tail
[417994.525827] usb 2-1.1: Product: docomo L02C
[417994.525830] usb 2-1.1: Manufacturer: NTT DOCOMO, INC.
[417994.527296] option 2-1.1:1.0: GSM modem (1-port) converter detected
[417994.527511] usb 2-1.1: GSM modem (1-port) converter now attached to ttyUSB0
[417994.527807] option 2-1.1:1.1: GSM modem (1-port) converter detected
[417994.527997] usb 2-1.1: GSM modem (1-port) converter now attached to ttyUSB1
[417994.528217] option 2-1.1:1.2: GSM modem (1-port) converter detected
[417994.528346] usb 2-1.1: GSM modem (1-port) converter now attached to ttyUSB2
[417994.528597] option 2-1.1:1.3: GSM modem (1-port) converter detected
[417994.528741] usb 2-1.1: GSM modem (1-port) converter now attached to ttyUSB3

プロダクトIDも61ddから618fに変わりました.

$ lsusb|grep LG
Bus 002 Device 029: ID 1004:618f LG Electronics, Inc. Ally/Optimus One

何故CD-ROMデバイスが出てくるかというとWindows環境などでのツールやドライバ導入のためです.このCD-ROMデバイス中にツールやドライバが入っていて簡単に導入が出来るというものなのですが,Linux版のツールやドライバは入っていないです.usb-modeswitchパッケージはCD-ROMからUSBモデムへのデバイスの切り替えをしてくれます.

</追記>

]]>
https://matoken.org/blog/2015/12/29/try-0sim-of-dejimonostation-magazine-in-february-2016-degree-in-raspberry-pi/feed/ 1
Linux 環境での Raspberry Pi 向け OS 書き込みTips https://matoken.org/blog/2015/12/08/raspberry-pi-for-os-writing-tips-on-linux-environment/ https://matoken.org/blog/2015/12/08/raspberry-pi-for-os-writing-tips-on-linux-environment/#comments Tue, 08 Dec 2015 00:17:37 +0000 http://matoken.org/blog/?p=1054 このエントリは Raspberry Pi Advent Calendar 2015 の12月08日分です.
昨日は @2box2boさんの RaspberryPiと公式タッチディスプレイでマインクラフトするお話 | 流連荒亡 でした.公式ディスプレイ欲しいです…….

最近 Raspberry Pi はサブPC 的に使っててネタがない(普通に Linux Desktop なので……)ので紙製ケースの紹介でもしようかと思っていたのですが,Raspberry Pi に OS を書き込むのによく使う dd 関連のネタが少し溜まっているので今回はこれを紹介しようと思います.(NOOBS だとほぼ関係なくコピーするだけでいいんですが……)
Rasbina jessie / Debian stretch で検証していますが,Linux なら導入手順以外同じだと思います.Mac OS X / UNIX 系の OS でも使えると思います.

– 紙ケースの一例 –

dd(dataset definition) は GNU Coreutils の中に入っているのでほとんどの GNU/Linux だと標準で導入されていると思います.とても便利だけど使い方を誤るとシステムやデータをいとも簡単に壊してしまえます.注意して実行しましょう.

進捗状況確認

dd で sd 書き込み中にどのくらい進んだのだろうと確認したくなることがあります.

kill -SIGUSR1

dd のプロセスに対して SIGUSR1 シグナルを投げると進捗が確認できます.

dd のプロセス番号を確認

$ ps -ef|grep dd
   :
root      9273 32218  0 17:57 pts/1    00:00:00 sudo dd of=/dev/sdz bs=4M
root      9276  9273  9 17:57 pts/1    00:00:00 dd of=/dev/sdz bs=4M

9276 なので以下のように

$ sudo kill -USR1 9276

で,こんな感じに表示されます.

0+243258 レコード入力
0+243258 レコード出力
1224679424 バイト (1.2 GB) コピーされました、 17.2794 秒、 70.9 MB/秒
0+302681 レコード入力
0+302681 レコード出力
1532985344 バイト (1.5 GB) コピーされました、 20.8063 秒、 73.7 MB/秒

なのでこんなとか

$ sudo pkill -SIGUSR1 ^dd

こんな感じで叩くと良い感じだと思います.

% watch -n30 'sudo pkill -SIGUSR1 ^dd`

pv(Pipe Viewer)

pv(Pipe Viewer) というパイプの状況を確認できるプログラムがあります.dd の間にこれを挟んで進捗状況を確認できます.

導入

$ apt install pv

利用例

% zcat 2015-11-21-raspbian-jessie.zip | pv | sudo dd of=/dev/sdz bs=4M
5.81GB 0:06:12 [15.2MB/s] [                           <=>                      ]

-N で 名前の,-c でクラスタオプションになります.これを活用すると複数のパイプの監視もできます.

$ zcat ./2015-11-21-raspbian-jessie.zip | pv -cN zcat | xz | pv -cN xz | dd of=./2015-11-21-raspbian-jessie.xz
     zcat: 8.41MB 0:00:05 [1.09MB/s] [   <=>                                   ]
       xz: 3.96MB 0:00:05 [1.06MB/s] [   <=>                                   ]

GNU ddrescue / ddrescue

dd じゃないけど dd の代わりに GNU ddrescue を利用するとプログレスが表示されます.

$ sudo apt install gddrescue
$ sudo ddrescue /dev/zero /dev/null --force
GNU ddrescue 1.19
Press Ctrl-C to interrupt
rescued:     2969 MB,  errsize:       0 B,  current rate:     354 MB/s
   ipos:     2969 MB,   errors:       0,    average rate:     742 MB/s
   opos:     2969 MB, run time:       4 s,  successful read:       0 s ago
Copying non-tried blocks... Pass 1 (forwards)

でも標準有力入力を受け付けないようです.

$ zcat ./2015-11-21-raspbian-jessie.zip | sudo ddrescue - /dev/sdz --force
ddrescue: Can't open input file: No such file or directory

類似の ddrescue だと標準入力もOKなようです.こちらの場合のコマンド名は dd_rescue です.

$ sudo apt install ddrescue
$ zcat ./2015-11-21-raspbian-jessie.zip | sudo dd_rescue - /dev/sdz
dd_rescue: (warning): input  file is not seekable!
dd_rescue: (warning): Illegal seek
dd_rescue: (warning): Don't use sparse writes for non-seekable output
dd_rescue: (info): ipos:     91136.0k, opos:     91136.0k, xferd:     91136.0k
                   errs:      0, errxfer:         0.0k, succxfer:     91136.0k
             +curr.rate:   144981kB/s, avg.rate:   144776kB/s, avg.load: 38.4%

ddすると重い/固まる

環境によって dd 実行中にとても重くなってマウスカーソルさえカクカク動くようになり並行して別の作業ができないようにます.

ionice

ionice を使って dd の優先度を下げることができます.

% zcat ./2015-11-21-raspbian-jessie.zip | sudo ionice -c2 -n7 dd of=/dev/sdz

pv -L

pv コマンドの -L オプションでパイプの帯域制限ができます.

   -L RATE, --rate-limit RATE
          Limit the transfer to a maximum of RATE bytes per second.  A suffix of "k", "m", "g",  or  "t"  can  be
          added to denote kilobytes (*1024), megabytes, and so on.
% zcat cros.img.gz | pv -L 8192k | sudo dd of=/dev/sdz

cgroup

リソース管理の cgroups で書き込み帯域制限をしてみます.以下は dd というグループを作成し,自分のシェルをそこに登録.SD Card のデバイスを書き込み制限 1k で設定し,dd で動作確認をしました.想定通り 1kB/s しか出なかったようです.

$ sudo mkdir /sys/fs/cgroup/blkio/dd
$ echo $$ | sudo tee -a /sys/fs/cgroup/blkio/dd/tasks 
26041
$ ls -l /dev/sdz
brw-rw---- 1 root disk 179, 0 12月  6 18:42 /dev/sdz
$ echo "179:0 1024" | sudo tee -a /sys/fs/cgroup/blkio/dd/blkio.throttle.write_bps_device 
179:0 1024
$ sudo dd if=/dev/zero of=/dev/sdz bs=4k count=10
10+0 レコード入力
10+0 レコード出力
40960 バイト (41 kB) コピーされました、 40.0136 秒、 1.0 kB/秒

書き込み速度が遅い

ブロックサイズ変更

dd コマンドはブロックサイズが 512バイトと小さいです.このサイズを変更することで1度に処理する容量が多くなり速度が改善されます.このサイズは bs オプションで設定できます.規定値と同じ 512バイトの場合は, bs=512.1MB の場合は bs=1M というようにして容量の単位(Yまで!)も指定できます.最近の私は 4~16M を指定しています.

$ zcat 2015-11-21-raspbian-jessie.zip | sudo dd of=/dev/sdz bs=4M

GNU ddrescue

GNU ddrescue は効率のいい処理を自動的に行うそうです.効率の良いブロックサイズを探すよりこれを導入したほうが早いかもしれません.

パーティション情報の削除

OS イメージをこれまで使っていた SD に上書きすると古いデータが残ってしまうことがあります.パーティション情報を削除してから書き込むと綺麗に行くようです.

Windows/Mac OS X の場合は SD Assosietion がフォーマッタを提供しているのでこれを利用すると良いと思います.

dd

dd コマンドでパーティション情報が入っているであろう先頭部分を消します.以下の例では 1M を 1回なので先頭の 1M が 0 で埋められます.2行目の hdparm はおまじないで kernel に書き換わったよと教えてあげています.最近は即時反映されるような感じですが,以前はこれを叩かないとうまく反映されないことが多かったです.(いちいち抜き差ししてみたり)

$ sudo dd if=/dev/zero of=/dev/sdz bs=1M count=1
$ sudo hdparm -z /dev/sdz

以下のように count を指定しない場合は全領域書き込みます.時間はかかるけど確実?

$ sudo dd of=/dev/zero of=/dev/sdz bs=10M

全領域書き込む場合は shred -z /dev/sdz でも良いですね.

wipefs

wipefs はパーティション情報の wipe をしてくれるツールです.一瞬で動作するし便利です.
util-linux パッケージ内の wipefs です.

デバイスだけ指定して実行すると現在のパーティションの状況が確認できます.-a オプションでパーティション情報が削除されます.便利.

$ sudo wipefs /dev/sdz
offset               type
----------------------------------------------------------------
0x1fe                dos   [partition table]

$ sudo wipefs -a /dev/sdz
/dev/sdz: 2 bytes were erased at offset 0x000001fe (dos): 55 aa
/dev/sdz: calling ioctl to re-read partition table: 成功です
$ sudo wipefs /dev/sdz

mount中のファイルシステムに書き込もうとすると終了するscript

dd は便利ですが,書き込み先を間違えるとシステムやデータを破壊してしまいます.私もつい一昨日やってしまいましたorz
#何故か /dev/mmcblk0 が /dev/sda へのシンボリックリンクとなっていた.
600GB の 先頭 1.5GB だからデータはほとんど救出できるだろうと思ったのですが,LUKS で暗号化していたのでメタデータが破壊され復旧は無理そうです.幸いデイリーバックアップがあるのでそちらから復旧中です.
(復旧中なのにどうやって書いているかというと Raspberry Pi 2 B にキーボードマウスモニタ取り付けて ReText で書いています.Web は midori でも重いので ssh -CY してファイルサーバのブラウザを使っています.使い慣れないキーボードが不便です><)

こういう悲しいことが起こらないようにできないものかと mount 中のデバイスに書き込もうとすると失敗させることができればいいのでは?と思ったのですがそういったオプションなどが見当たりませんでした.
それっぽいscript を書いてみました.

利用方法は,/usr/local/bin/dd としてこのスクリプトを用意して実行権をつけておいて通常の dd コマンドのように使うだけです.

$ wget -O - https://gist.githubusercontent.com/matoken/e051cefb78594520038d/raw/9ac20f31c590a043f1774f82068a99846ab7c4bb/dd.sh | sudo tee /usr/local/bin/dd
$ sudo chmod +x /usr/local/bin/dd
$ which dd
/usr/local/bin/dd
$ sudo which dd
/usr/local/bin/dd

マウント状態で書き込もうとすると失敗する.

$ sudo dd if=/dev/zero of=/dev/sdz
/dev/sdz seems to specify the file system in the mount.
Force Quit.

アンマウントして再実行すると dd が開始される.

$ sudo umount /dev/sdz1 
$ sudo dd if=/dev/zero of=/dev/sdz1

あまりテスト出来ていないので何かあったら教えてもらえると助かります.

おわり

ということで Raspberry Pi や kobo の SD Card に何度も書き込んだ時の Tips まとめみたいなものでした.ここ間違ってるよとかもっといい方法あるよとかおしえてもらえると助かります.(特に誤って書き込まないようにする方法)

]]>
https://matoken.org/blog/2015/12/08/raspberry-pi-for-os-writing-tips-on-linux-environment/feed/ 4
あひる焼きfortune https://matoken.org/blog/2015/12/05/ahiruyaki-fortune/ https://matoken.org/blog/2015/12/05/ahiruyaki-fortune/#respond Fri, 04 Dec 2015 16:06:13 +0000 http://matoken.org/blog/?p=1045 この記事は あひる焼き Advent Calendar 2015 – Adventar の12月05日分の記事です.

みんなでまったり #あひる焼き すればええんじゃないかなと思います。

ということで最近焼いたあひるの話を.

発端

fortune というフォーチュンクッキーのような格言をランダムに表示するプログラムがあります.様々な辞書データが存在していて自作も出来ます.

pi@raspberrypi ~ $ sudo apt install fortunes            # fortuneの導入
pi@raspberrypi ~ $ fortune                              # fortuneの実行
Some of us are becoming the men we wanted to marry.
                -- Gloria Steinem
pi@raspberrypi /tmp $ cat <<__EOF__> data               # fortuneのデータ作成
テスト
%
1行目
2行目
%
__EOF__
pi@raspberrypi /tmp $ strfile data                      # データ変換
"data.dat" created
There were 2 strings
Longest string: 16 bytes
Shortest string: 10 bytes
pi@raspberrypi /tmp $ ls data*
data  data.dat
pi@raspberrypi /tmp $ fortune data                      # 自作データを利用
1行目
2行目
pi@raspberrypi /tmp $ fortune data
テスト

その辞書データに @ahiru3netさんのあひる焼きに対するmentionを使うと楽しいかもしれないと思いました.でもデータを集めるのが面倒だなとつぶやいたところ @shimadahさんにGitHub を教えてもらいました.

それを元にコネコネして……うまくいかないところに@ahiru3netさんの助言.

焼けた

やってることはahiru_yakunaプラグインのmentionのデータをもらってきて乱暴にfortuneで利用できる形式に変換して~/.zshrc に登録してログイン時に台詞を出すようにしています.

mkdir ~/.fortune;wget -O - https://github.com/Na0ki/ahiru_yakuna/raw/master/config.yml|grep ^\-\ \" | sed 's/^-\ \"//'| sed 's/"$/\n%/' | sed 's/\\n/\n/g' > ~/.fortune/ahiruyaki && strfile ~/.fortune/ahiruyaki ~/.fortune/ahiruyaki.dat && echo fortune ~/.fortune/ahiruyaki >> ~/.zshrc

これでログインのたびに以下のようにメッセージが表示されるようになりました :)

焼いちゃうのか?!本当に焼いちゃうのか?!
pi@raspberrypi ~ $

もっと焼く

でもメッセージだけだとちょっとさみしいです.
そこで cowsay を使ってみます.cowsay はアスキーアートで書かれた牛などのキャラクタに指定した台詞を喋らせることの出来るプログラムです.都合のいいことに選択できるキャラクタの中にあひるがいます.あひるに喋ってもらいましょう!

pi@raspberrypi ~ $ sudo apt install cowsay                  # cowsay 導入
pi@raspberrypi ~ $ cowsay hello cow                         # cowsay 実行
 ___________
< hello cow >
 -----------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
pi@raspberrypi ~ $ cowsay -f duck hello duck                # あひるに喋らせる
 ____________
< hello duck >
 ------------
 \
  \
   \ >()_
      (__)__ _
pi@raspberrypi ~ $ cowsay -f duck あひる焼き                 # 日本語を喋らせる
 _______
< あひる焼き >
 -------
 \
  \
   \ >()_
      (__)__ _

日本語を喋らせると吹き出しがずれてしまいます.あひる焼きの台詞の殆どは日本語なのでこのままではまずいです.調べてみるとバグレポートされていました.

中国語?もやっぱりずれちゃうみたいです.
文字数と見た目のキャラクタの文字数のズレから起こっているようです.とりあえず日本語だけでも動くように出来ないかと euc-jp に変換して文字数を確認してといったダメな修正をしていたところGoogle+の以下の投稿のコメントで +Masakazu Takahashiさんがさくっとパッチを作ってくれました!

このパッチは報告しましたが,取り込まれてもstretch以降でしょう.ということでDebianだと以下のようにしてソースを入手してパッチを当てることが出来ます.

pi@raspberrypi ~/src $ sudo apt install libtext-charwidth-perl      # 必要なパッケージの導入
pi@raspberrypi ~/src $ apt-get source cowsay                        # cowsay の source 入手
pi@raspberrypi ~/src $ cd cowsay-3.03+dfsg1                         # ディレクトリ移動とパッチ適用
pi@raspberrypi ~/src/cowsay-3.03+dfsg1 $ wget -O - https://gist.githubusercontent.com/emasaka/639a9168c6a9ddba044f/raw/1a55ec58ded59b3181f1721dbbe814a38d5ea4cb/cowsay-mbswidth.patch | patch -i -
patching file cowsay
pi@raspberrypi ~/src/cowsay-3.03+dfsg1 $ ./cowsay -f duck あひる焼き
 ____________
< あひる焼き >
 ------------
 \
  \
   \ >()_
      (__)__ _

~/bin 辺りにコピーして使ったり,以下のような感じで既存のパッケージを置き換えてしまってもいいかもしれません.

pi@raspberrypi ~/src/cowsay-3.03+dfsg1 $ vi debian/control
- Depends: ${misc:Depends}, ${perl:Depends}
+ Depends: ${misc:Depends}, ${perl:Depends}, libtext-charwidth-perl
pi@raspberrypi ~/src/cowsay-3.03+dfsg1 $ dpkg-buildpackage -b
pi@raspberrypi ~/src/cowsay-3.03+dfsg1 $ sudo debi

さて,fortuneのことを忘れてしまいそうですが以下のようにしてあひる焼きfortuneの結果をあひるに喋らせます.

pi@raspberrypi ~ $ cowsay -f duck `fortune ~/.fortune/ahiruyaki`
 ______________
< ヒッヒッヒッ >
 --------------
 \
  \
   \ >()_
      (__)__ _

いい感じです :)

~/.profile 辺りに登録しちゃいましょう.aliasも設定してみます.

pi@raspberrypi ~ $ echo 'alias a="fortune ~/.fortune/ahiruyaki | cowsay -f duck"' >> ~/.profile 
pi@raspberrypi ~ $ echo a >> ~/.profile

これでlogin時や a と入力することで実行されます.

Last login: Fri Dec  4 23:32:05 2015 from 192.168.2.210
 ________________________________________________________________________________
/ あひる焼きというものには鮮度があります。焼けば焼くほどに、あひる焼きとは廃れて \
\ いくものなのです。                                                             /
 --------------------------------------------------------------------------------
 \
  \
   \ >()_
      (__)__ _
pi@raspberrypi ~ $ a
 ________________________
< バーニング通帳!!!! >
 ------------------------
 \
  \
   \ >()_
      (__)__ _

Xでも焼く

GUI の X 版のcowsayも存在します.こいつも試してみましょう.

pi@raspberrypi ~ $ sudo apt install xcowsay
pi@raspberrypi ~ $ xcowsay `fortune ~/.fortune/ahiruyaki`

https://www.flickr.com/photos/119142834@N05/23490968856/in/dateposted-public/

なかなか特徴的なcowが喋りました.せっかくなのであひるに喋らせましょう.吹き出しの向きと位置を変えてあひる画像を指定しています.

pi@raspberrypi ~ $ wget https://github.com/Na0ki/ahiru_yakuna/raw/master/ahiru240.jpg -O ~/.fortune/ahiru240.jpg
fortune ~/.fortune/ahiruyaki | xcowsay -l --bubble-at=0,-60 --image=$HOME/.fortune/ahiru240.jpg

https://www.flickr.com/photos/119142834@N05/23434841661/in/dateposted-public/

背景がちょっと邪魔なので透過処理をしてみます.

https://www.flickr.com/photos/119142834@N05/23149788589/in/dateposted-public/

いい感じです :)
例によってaliasにしておきます

pi@raspberrypi ~ $ echo alias xa='fortune ~/.fortune/ahiruyaki | xcowsay -l --bubble-at=0,-60 --image=$HOME/.fortune/ahiru240.png' >> ~/.profile

そんなこんなでみんなのおかげであひるがいい感じに焼けるようになりました.@shimadahさん, @ahiru3netさん, @emasakaさんありがとうございました!

#そうそう,以前はフレームバッファでもあひる焼きしてました.

]]>
https://matoken.org/blog/2015/12/05/ahiruyaki-fortune/feed/ 0
Rasbian の rc_gui の日本語訳をしてみる https://matoken.org/blog/2015/11/24/try-for-japanese-rc_gui-of-raspbian/ https://matoken.org/blog/2015/11/24/try-for-japanese-rc_gui-of-raspbian/#comments Mon, 23 Nov 2015 22:11:54 +0000 http://matoken.org/blog/?p=1029 https://www.flickr.com/photos/119142834@N05/22961495820/in/dateposted-public/
https://www.flickr.com/photos/119142834@N05/23257335535/in/dateposted-public/
https://www.flickr.com/photos/119142834@N05/23231207776/in/dateposted-public/
https://www.flickr.com/photos/119142834@N05/22630222323/in/dateposted-public/

Raspberry Pi の OS の一つの Rasbian に jessie から Raspberry Pi 設定ツールの GUI 版が登場しました.パッケージ名は rc-gui で,実行ファイルは /usr/bin/rc_gui です.
( ちょうど先日の鹿児島Linux 勉強会向けに作ったスライドに説明が少しあるので興味のある方はどうぞ.-> 勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る )

Raspberry Pi 固有の設定を行うのにほぼ必須のツールなので日本語化されると嬉しい人が多そうな気がしたので翻訳して本家?に投げてみました.(文章量少なかったし)すると取り込まれたようなので記録を残しておきます.

翻訳の手順は,@okano_tさんの以下の文章などが解りやすいと思います.今回は主に poEdit 上で翻訳を行いました.

動作確認が楽なので作業は Rasbian jessie 上で行いました.翻訳に必要なパッケージを導入し,source を入手,poEdit で翻訳して動作確認,GitHub に push して pull request を投げるという感じです.

  • パッケージの導入
$ sudo apt update && sudo apt upgrade
$ sudo apt install gettext git
  • source の入手
$ git clone https://github.com/raspberrypi/rc_gui.git
  • poEdit で翻訳
    poEdit を開き,「翻訳プロジェクトを新規作成する」から clone した中の rc_gyui/po/en_GB.po を開きます.翻訳の言語に「日本語 (日本)」を選び翻訳していきます.
    保存を行うと ja_JP.po として保存され,同時に ja_JP.mo が作成されます.

  • 動作確認
    ja_JP.mo をシステムにコピーして rc_gui を実行して動作確認します.

$ sudo cp ja_JP.mo /usr/share/locale/ja/LC_MESSAGES/rc_gui.mo
$ LANG=ja_JP.UTF8 rc_gui

一通り訳したら GitHub で pull request を投げました.

とりあえず試してみる1

リリースサイクルなどがわからないのでいつこの翻訳が取り込まれるかわからないのですが,以下のような手順で翻訳を反映させることが可能です.
必要なパッケージの導入,po ファイルを mo ファイルに変換,システムに反映.

$ sudo apt install gettext git
$ git clone --depth 1 https://github.com/raspberrypi/rc_gui.git
$ cd rc_gui/po
$ msgfmt ja_JP.po -o ja_JP.mo
$ sudo cp ja_JP.mo /usr/share/locale/ja/LC_MESSAGES/rc_gui.mo

とりあえず試してみる2

以下に今の時点での ja_JP.mo を GitHub に置いたのでとりあえず以下のような感じで試せると思います.(こちらは更新するつもりはないのでどんどん古くなるはずです)

$ sudo sh -c 'wget https://raw.githubusercontent.com/matoken/matoken.github.com/master/blog/20151124-rc_gui-translation/ja_JP.mo -O /usr/share/locale/ja/LC_MESSAGES/rc_gui.mo'

追記)
パッケージ情報を確認すると,違うURL が出てきました.もしかしたら違うところで作業をしてしまった?

$ apt show rc-gui|grep Homepage
 
Homepage: https://github.com/RPi-Distro/rc_gui

]]>
https://matoken.org/blog/2015/11/24/try-for-japanese-rc_gui-of-raspbian/feed/ 1
Let’s Encrypt を使った https 設定 https://matoken.org/blog/2015/11/06/https-setting-you-use-the-lets-encrypt/ https://matoken.org/blog/2015/11/06/https-setting-you-use-the-lets-encrypt/#respond Thu, 05 Nov 2015 20:34:01 +0000 http://matoken.org/blog/?p=1006

Let’s Encrypt に以前メールアドレスを登録していたのですが,

Let’s Encrypt Closed Beta Invite

とうことでメールが届いていたので試してみました.

ちなみに Let’s Encrypt は DV(Domain Validation)証明書が無料で取得できるサービスで,経路の暗号化はされるけど組織の実在確認まではしないレベルの物.

早速試してみます.
実行環境は Debian jessie amd64 + Apache httpd 2.4(2.4.10-10+deb8u3)

Let’s Encrypt のツールを入手して実行する.

$ git clone https://github.com/letsencrypt/letsencrypt.git
$ cd letsencrypt
$ ./letsencrypt-auto --agree-dev-preview --server https://acme-v01.api.letsencrypt.org/directory auth
Bootstrapping dependencies for Debian-based OSes...
[sudo] password for user:

とすると,必要なパッケージを自動的に導入し始めます.
質問がいくつか来るけど,メールアドレス(Let’s Encrypt 登録時のもの)とコモンネームにApache とそれ以外の選択くらい.これで自動的に Let’s Encrypt のサーバと通信を行い証明書の取得ホト損までしてくれます.
そして,最後にこんな注意書きが表示されました.

IMPORTANT NOTES:
 - If you lose your account credentials, you can recover through
   e-mails sent to user@example.org.
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/example.org/fullchain.pem. Your cert will
   expire on 2016-02-02. To obtain a new version of the certificate in
   the future, simply run Let's Encrypt again.
 - Your account credentials have been saved in your Let's Encrypt
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Let's
   Encrypt so making regular backups of this folder is ideal.

/etc 以下はデイリーでバックアップ取ってるので大丈夫なはず.24時間以上経ったけどメールは未だ届いていないよう.
そして,自動的に /etc/apache2/sites-available/009-example.conf を元に /etc/apache2/sites-available/009-example-le-ssl.conf が作られていました.
※このファイルは letsencrypt-auto を再実行すると消えて実行完了後再生成(以下の修正も必要)されたのでちょっと嫌.多分オプションとかで回避できると思うけど未確認.

以下の2行だけ修正して,

SSLCertificateFile /etc/letsencrypt/live/example.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.org/privkey.pem

a2ensite して restart で

$ sudo a2ensite 009-example-le-ssl
$ sudo service apache2 reload

とりあえず動いた

% openssl s_client -connect example.org:443
CONNECTED(00000003)
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X1
verify return:1
depth=0 CN = example.org
verify return:1
---
Certificate chain
 0 s:/CN=example.org
   i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X1
 1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X1
   i:/O=Digital Signature Trust Co./CN=DST Root CA X3
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIE/TCCA+WgAwIBAgISAbbh6Bp+aXaatBj/TJ7lkyyZMA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMTAeFw0xNTExMDQxNjQ4MDBaFw0x
NjAyMDIxNjQ4MDBaMBYxFDASBgNVBAMTC2thZ29sdWcub3JnMIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzb79Wux4LWzC+ZKTRRXN53+/IRraso2AZRrt
/wesf4EBEIl8i6Iu4Dl0FjLoomxZUCN0T7C5iJ4aPy629UkWDZrawFWGkXYT00ed
UziOKTXpYYTM9BBp9Qx1aw/CT8XY6TjOtaJ21AjcIXZBZ8EPnf6fWcHEFCsNYLKk
7U/e59WJ1B1ciXowS7nMwDy1c3rvu7tlzGRuO/xSx/hu0R5DYL8zyPlLwGZyfVv/
UYYtY6Wf8ItzgthpzltqtbMv4Kuohwu2mPwKQJ73MJoOghUD4p6oxiJ3nsgLY8DO
mIlW6ScXihlZ/pWfzjWaohKsvWM+qgnQpWNUQoaXNj0ES34m4QIDAQABo4ICDzCC
AgswDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD
AjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQH4Pb+Brg5Q0PWhEZ7CEdAkxWKxzAf
BgNVHSMEGDAWgBSoSmpjBH3duubRObemRWXv86jsoTBwBggrBgEFBQcBAQRkMGIw
LwYIKwYBBQUHMAGGI2h0dHA6Ly9vY3NwLmludC14MS5sZXRzZW5jcnlwdC5vcmcv
MC8GCCsGAQUFBzAChiNodHRwOi8vY2VydC5pbnQteDEubGV0c2VuY3J5cHQub3Jn
LzAWBgNVHREEDzANggtrYWdvbHVnLm9yZzCCAQAGA1UdIASB+DCB9TAKBgZngQwB
AgEwADCB5gYLKwYBBAGC3xMBAQEwgdYwJgYIKwYBBQUHAgEWGmh0dHA6Ly9jcHMu
bGV0c2VuY3J5cHQub3JnMIGrBggrBgEFBQcCAjCBngyBm1RoaXMgQ2VydGlmaWNh
dGUgbWF5IG9ubHkgYmUgcmVsaWVkIHVwb24gYnkgUmVseWluZyBQYXJ0aWVzIGFu
ZCBvbmx5IGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgQ2VydGlmaWNhdGUgUG9saWN5
IGZvdW5kIGF0IGh0dHBzOi8vbGV0c2VuY3J5cHQub3JnL3JlcG9zaXRvcnkvMA0G
CSqGSIb3DQEBCwUAA4IBAQBa5DjWSE/d6alvGUDNW4guiJauqvxB3B+YULzRTseb
0kXGyu46u16F4av+Ate0Jxq3NnZdOpy8OTiL/wGQeWOWs33zdlxii5o8R12pMMTS
/NWFxawiCkJnzpWkhdLQGv3RNUUQn0w5yXDSY/4wK8nZYJiHXJyNQen2V6vkRPUA
U+u24R4iytsrCXW08bGa+B3F9VIadBa8Br3bbJxV5hxCC2nCE6J8C9jRERc3GKTG
YBuSlM/gaLFopgFjRIDHY5IY5tCB3P8YFbbahqNHCXkh3Ilnlbmn3WW3sOXGOJDT
2s4AbSyzJHdAk3OqtMUoVl/7fk2a70mFiQi0JWotcsoa
-----END CERTIFICATE-----
subject=/CN=example.org
issuer=/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X1
---
No client certificate CA names sent
Peer signing digest: SHA512
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 3171 bytes and written 441 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES128-GCM-SHA256
    Session-ID: 21463ABE9EDCAF2B93E782CC2C4252E8CAA9A98B6B0036F957218C42A81419CE
    Session-ID-ctx:
    Master-Key: 0B652E199D83894F04BEAB5E268EEA8806F0DAB300AA4F5AA26C3B6361D57766FE5ACF08353DAD07781960A95BDFB7BB
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 300 (seconds)
    TLS session ticket:
    0000 - be 38 de da a3 27 cf 1e-be 39 ee df 1c f0 2e e3   .8...'...9......
    0010 - 47 4e a1 ad 15 8f 43 3c-89 2b 1b 1f ea ef 46 a1   GN....C<.+....F.
    0020 - 09 d3 1b 0d c6 09 9a 99-e1 c2 d7 22 fd e0 b7 6f   ..........."...o
    0030 - 08 cb ba 73 d8 cb 3a 82-55 59 ee 5f 05 56 9c d6   ...s..:.UY._.V..
    0040 - bc 80 1a b3 b0 8c 87 16-2f fc 69 e2 03 0c a2 7f   ......../.i.....
    0050 - 9d e2 1f 2b d3 14 fb b7-78 28 22 48 3b ff 28 52   ...+....x("H;.(R
    0060 - 5e 89 bd cd 9f 3d 4f 26-aa 1d 2d bb af 4a 84 cf   ^....=O&..-..J..
    0070 - ce 3c 20 ac 55 84 33 56-10 6c 19 1a d3 15 ce 30   .< .U.3V.l.....0
    0080 - 7e e7 0b 6f f9 31 ef 92-c0 11 7f 95 de a6 fa 80   ~..o.1..........
    0090 - c1 5d 46 92 d6 b5 0c 5a-78 75 92 ad 1f bb 6f c0   .]F....Zxu....o.
    00a0 - 7f 35 ac 07 41 07 0a c7-a5 f5 5b 3f 16 ca b7 4e   .5..A.....[?...N
    00b0 - d7 7f c1 68 dc 28 e8 15-f9 95 d9 e1 a7 bf d0 c4   ...h.(..........
 
    Start Time: 1446664204
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
 
% cat cer
-----BEGIN CERTIFICATE-----
MIIE/TCCA+WgAwIBAgISAbbh6Bp+aXaatBj/TJ7lkyyZMA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMTAeFw0xNTExMDQxNjQ4MDBaFw0x
NjAyMDIxNjQ4MDBaMBYxFDASBgNVBAMTC2thZ29sdWcub3JnMIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzb79Wux4LWzC+ZKTRRXN53+/IRraso2AZRrt
/wesf4EBEIl8i6Iu4Dl0FjLoomxZUCN0T7C5iJ4aPy629UkWDZrawFWGkXYT00ed
UziOKTXpYYTM9BBp9Qx1aw/CT8XY6TjOtaJ21AjcIXZBZ8EPnf6fWcHEFCsNYLKk
7U/e59WJ1B1ciXowS7nMwDy1c3rvu7tlzGRuO/xSx/hu0R5DYL8zyPlLwGZyfVv/
UYYtY6Wf8ItzgthpzltqtbMv4Kuohwu2mPwKQJ73MJoOghUD4p6oxiJ3nsgLY8DO
mIlW6ScXihlZ/pWfzjWaohKsvWM+qgnQpWNUQoaXNj0ES34m4QIDAQABo4ICDzCC
AgswDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD
AjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQH4Pb+Brg5Q0PWhEZ7CEdAkxWKxzAf
BgNVHSMEGDAWgBSoSmpjBH3duubRObemRWXv86jsoTBwBggrBgEFBQcBAQRkMGIw
LwYIKwYBBQUHMAGGI2h0dHA6Ly9vY3NwLmludC14MS5sZXRzZW5jcnlwdC5vcmcv
MC8GCCsGAQUFBzAChiNodHRwOi8vY2VydC5pbnQteDEubGV0c2VuY3J5cHQub3Jn
LzAWBgNVHREEDzANggtrYWdvbHVnLm9yZzCCAQAGA1UdIASB+DCB9TAKBgZngQwB
AgEwADCB5gYLKwYBBAGC3xMBAQEwgdYwJgYIKwYBBQUHAgEWGmh0dHA6Ly9jcHMu
bGV0c2VuY3J5cHQub3JnMIGrBggrBgEFBQcCAjCBngyBm1RoaXMgQ2VydGlmaWNh
dGUgbWF5IG9ubHkgYmUgcmVsaWVkIHVwb24gYnkgUmVseWluZyBQYXJ0aWVzIGFu
ZCBvbmx5IGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgQ2VydGlmaWNhdGUgUG9saWN5
IGZvdW5kIGF0IGh0dHBzOi8vbGV0c2VuY3J5cHQub3JnL3JlcG9zaXRvcnkvMA0G
CSqGSIb3DQEBCwUAA4IBAQBa5DjWSE/d6alvGUDNW4guiJauqvxB3B+YULzRTseb
0kXGyu46u16F4av+Ate0Jxq3NnZdOpy8OTiL/wGQeWOWs33zdlxii5o8R12pMMTS
/NWFxawiCkJnzpWkhdLQGv3RNUUQn0w5yXDSY/4wK8nZYJiHXJyNQen2V6vkRPUA
U+u24R4iytsrCXW08bGa+B3F9VIadBa8Br3bbJxV5hxCC2nCE6J8C9jRERc3GKTG
YBuSlM/gaLFopgFjRIDHY5IY5tCB3P8YFbbahqNHCXkh3Ilnlbmn3WW3sOXGOJDT
2s4AbSyzJHdAk3OqtMUoVl/7fk2a70mFiQi0JWotcsoa
-----END CERTIFICATE-----
% openssl x509 -in cer -text
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            01:b6:e1:e8:1a:7e:69:76:9a:b4:18:ff:4c:9e:e5:93:2c:99
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=US, O=Let's Encrypt, CN=Let's Encrypt Authority X1
        Validity
            Not Before: Nov  4 16:48:00 2015 GMT
            Not After : Feb  2 16:48:00 2016 GMT
        Subject: CN=example.org
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:cd:be:fd:5a:ec:78:2d:6c:c2:f9:92:93:45:15:
                    cd:e7:7f:bf:21:1a:da:b2:8d:80:65:1a:ed:ff:07:
                    ac:7f:81:01:10:89:7c:8b:a2:2e:e0:39:74:16:32:
                    e8:a2:6c:59:50:23:74:4f:b0:b9:88:9e:1a:3f:2e:
                    b6:f5:49:16:0d:9a:da:c0:55:86:91:76:13:d3:47:
                    9d:53:38:8e:29:35:e9:61:84:cc:f4:10:69:f5:0c:
                    75:6b:0f:c2:4f:c5:d8:e9:38:ce:b5:a2:76:d4:08:
                    dc:21:76:41:67:c1:0f:9d:fe:9f:59:c1:c4:14:2b:
                    0d:60:b2:a4:ed:4f:de:e7:d5:89:d4:1d:5c:89:7a:
                    30:4b:b9:cc:c0:3c:b5:73:7a:ef:bb:bb:65:cc:64:
                    6e:3b:fc:52:c7:f8:6e:d1:1e:43:60:bf:33:c8:f9:
                    4b:c0:66:72:7d:5b:ff:51:86:2d:63:a5:9f:f0:8b:
                    73:82:d8:69:ce:5b:6a:b5:b3:2f:e0:ab:a8:87:0b:
                    b6:98:fc:0a:40:9e:f7:30:9a:0e:82:15:03:e2:9e:
                    a8:c6:22:77:9e:c8:0b:63:c0:ce:98:89:56:e9:27:
                    17:8a:19:59:fe:95:9f:ce:35:9a:a2:12:ac:bd:63:
                    3e:aa:09:d0:a5:63:54:42:86:97:36:3d:04:4b:7e:
                    26:e1
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Key Usage: critical
                Digital Signature, Key Encipherment
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication
            X509v3 Basic Constraints: critical
                CA:FALSE
            X509v3 Subject Key Identifier:
                07:E0:F6:FE:06:B8:39:43:43:D6:84:46:7B:08:47:40:93:15:8A:C7
            X509v3 Authority Key Identifier:
                keyid:A8:4A:6A:63:04:7D:DD:BA:E6:D1:39:B7:A6:45:65:EF:F3:A8:EC:A1
 
            Authority Information Access:
                OCSP - URI:http://ocsp.int-x1.letsencrypt.org/
                CA Issuers - URI:http://cert.int-x1.letsencrypt.org/
 
            X509v3 Subject Alternative Name:
                DNS:example.org
            X509v3 Certificate Policies:
                Policy: 2.23.140.1.2.1
                Policy: 1.3.6.1.4.1.44947.1.1.1
                  CPS: http://cps.letsencrypt.org
                  User Notice:
                    Explicit Text: This Certificate may only be relied upon by Relying Parties and only in accordance with the Certificate Policy found at https://letsencrypt.org/repository/
 
    Signature Algorithm: sha256WithRSAEncryption
         5a:e4:38:d6:48:4f:dd:e9:a9:6f:19:40:cd:5b:88:2e:88:96:
         ae:aa:fc:41:dc:1f:98:50:bc:d1:4e:c7:9b:d2:45:c6:ca:ee:
         3a:bb:5e:85:e1:ab:fe:02:d7:b4:27:1a:b7:36:76:5d:3a:9c:
         bc:39:38:8b:ff:01:90:79:63:96:b3:7d:f3:76:5c:62:8b:9a:
         3c:47:5d:a9:30:c4:d2:fc:d5:85:c5:ac:22:0a:42:67:ce:95:
         a4:85:d2:d0:1a:fd:d1:35:45:10:9f:4c:39:c9:70:d2:63:fe:
         30:2b:c9:d9:60:98:87:5c:9c:8d:41:e9:f6:57:ab:e4:44:f5:
         00:53:eb:b6:e1:1e:22:ca:db:2b:09:75:b4:f1:b1:9a:f8:1d:
         c5:f5:52:1a:74:16:bc:06:bd:db:6c:9c:55:e6:1c:42:0b:69:
         c2:13:a2:7c:0b:d8:d1:11:17:37:18:a4:c6:60:1b:92:94:cf:
         e0:68:b1:68:a6:01:63:44:80:c7:63:92:18:e6:d0:81:dc:ff:
         18:15:b6:da:86:a3:47:09:79:21:dc:89:67:95:b9:a7:dd:65:
         b7:b0:e5:c6:38:90:d3:da:ce:00:6d:2c:b3:24:77:40:93:73:
         aa:b4:c5:28:56:5f:fb:7e:4d:9a:ef:49:85:89:08:b4:25:6a:
         2d:72:ca:1a
-----BEGIN CERTIFICATE-----
MIIE/TCCA+WgAwIBAgISAbbh6Bp+aXaatBj/TJ7lkyyZMA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMTAeFw0xNTExMDQxNjQ4MDBaFw0x
NjAyMDIxNjQ4MDBaMBYxFDASBgNVBAMTC2thZ29sdWcub3JnMIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzb79Wux4LWzC+ZKTRRXN53+/IRraso2AZRrt
/wesf4EBEIl8i6Iu4Dl0FjLoomxZUCN0T7C5iJ4aPy629UkWDZrawFWGkXYT00ed
UziOKTXpYYTM9BBp9Qx1aw/CT8XY6TjOtaJ21AjcIXZBZ8EPnf6fWcHEFCsNYLKk
7U/e59WJ1B1ciXowS7nMwDy1c3rvu7tlzGRuO/xSx/hu0R5DYL8zyPlLwGZyfVv/
UYYtY6Wf8ItzgthpzltqtbMv4Kuohwu2mPwKQJ73MJoOghUD4p6oxiJ3nsgLY8DO
mIlW6ScXihlZ/pWfzjWaohKsvWM+qgnQpWNUQoaXNj0ES34m4QIDAQABo4ICDzCC
AgswDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD
AjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQH4Pb+Brg5Q0PWhEZ7CEdAkxWKxzAf
BgNVHSMEGDAWgBSoSmpjBH3duubRObemRWXv86jsoTBwBggrBgEFBQcBAQRkMGIw
LwYIKwYBBQUHMAGGI2h0dHA6Ly9vY3NwLmludC14MS5sZXRzZW5jcnlwdC5vcmcv
MC8GCCsGAQUFBzAChiNodHRwOi8vY2VydC5pbnQteDEubGV0c2VuY3J5cHQub3Jn
LzAWBgNVHREEDzANggtrYWdvbHVnLm9yZzCCAQAGA1UdIASB+DCB9TAKBgZngQwB
AgEwADCB5gYLKwYBBAGC3xMBAQEwgdYwJgYIKwYBBQUHAgEWGmh0dHA6Ly9jcHMu
bGV0c2VuY3J5cHQub3JnMIGrBggrBgEFBQcCAjCBngyBm1RoaXMgQ2VydGlmaWNh
dGUgbWF5IG9ubHkgYmUgcmVsaWVkIHVwb24gYnkgUmVseWluZyBQYXJ0aWVzIGFu
ZCBvbmx5IGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgQ2VydGlmaWNhdGUgUG9saWN5
IGZvdW5kIGF0IGh0dHBzOi8vbGV0c2VuY3J5cHQub3JnL3JlcG9zaXRvcnkvMA0G
CSqGSIb3DQEBCwUAA4IBAQBa5DjWSE/d6alvGUDNW4guiJauqvxB3B+YULzRTseb
0kXGyu46u16F4av+Ate0Jxq3NnZdOpy8OTiL/wGQeWOWs33zdlxii5o8R12pMMTS
/NWFxawiCkJnzpWkhdLQGv3RNUUQn0w5yXDSY/4wK8nZYJiHXJyNQen2V6vkRPUA
U+u24R4iytsrCXW08bGa+B3F9VIadBa8Br3bbJxV5hxCC2nCE6J8C9jRERc3GKTG
YBuSlM/gaLFopgFjRIDHY5IY5tCB3P8YFbbahqNHCXkh3Ilnlbmn3WW3sOXGOJDT
2s4AbSyzJHdAk3OqtMUoVl/7fk2a70mFiQi0JWotcsoa
-----END CERTIFICATE-----

後はコンテンツを全部 https に設定して http から転送するようにしないといけないですね.

とりあえず無料で使える StartSSL,安めの Rapid SSL,キャンペーンや乗り換えで一定期間無料とか色々ありますが,そのくらいのレベルであれば代替になるかなと思います.それ以上は大抵 EV になるでしょうし.ただ CNしか無かったり期間が短いのが気になりますね.

]]>
https://matoken.org/blog/2015/11/06/https-setting-you-use-the-lets-encrypt/feed/ 0
Atom editor を Markdown editor として少し試す https://matoken.org/blog/2015/08/28/atom-editor-as-markdown-editor/ https://matoken.org/blog/2015/08/28/atom-editor-as-markdown-editor/#respond Thu, 27 Aug 2015 20:56:06 +0000 http://matoken.org/blog/?p=915 https://www.flickr.com/photos/119142834@N05/20907453316/in/dateposted-public/

GitHub 開発の OSS なテキストエディタ.Node.js や Chromium やらで出来ているということで重そうだなぁと敬遠していたのですが少し試してみました.試した環境は Debian stretch amd64 です.

ということで,とりあえず導入.

% wget https://github.com/atom/atom/releases/download/v1.0.7/atom-amd64.deb
% sha256sum ./atom-amd64.deb
4562e8abb82a5fbd5bffa9bb7dcdbb81283dba7b6d8f6eb387bb167d3fbb4ed9  ./atom-amd64.deb
% sudo dpkg -i ./atom-amd64.deb
% rehash
% atom &

日本語が豆腐になるので日本語フォントを指定

Edit -> Prefarence -> Editor Settings -> Font Family
or
~/.atom/config.csoneditor: 内の fontFamily: に日本語フォントを指定

~/.atom/config.cson は今こんな感じ

"*":
  "exception-reporting":
    userId: "13047373-12a5-40a9-03bf-xxxxxxxxxxxx"
  welcome:
    showOnStartup: false
  core:
    themes: [
      "atom-light-ui"
      "atom-light-syntax"
    ]
    excludeVcsIgnoredPaths: false
    audioBeep: false
  editor:
    invisibles: {}
    fontFamily: "VL Gothic"
    softWrap: true
  "markdown-preview":
    fontFamily: "VL Gothic"
    useGitHubStyle: true

Markdown preview が豆腐になるのを修正

Markdown preview は Ctrl + Shift + m で表示できるのですが,こちらも日本語が豆腐になってしまいます.

を参考に ~/.atom/styles.less を新規作成.

* {
  font-family: VL Gothic;
  font-size:12px;
}
 
.tree-view {
}
 
.editor {
  font-size:14px;
  font-family: VL Gothic;
}
.terminal {
  font-size:12px;
  font-family: VL Gothic;
}
.markdown-preview {
  h1,h2,h3,h4,h5,h6 {
    font-family: VL Gothic;
  }
}

日本語の折り返しがうまく行かないので japanese-wrap 導入

% apm install japanese-wrap

とりあえずこれで行けるかな?この文章は Atom で書いてみました.Markdown preview で右クリック -> Copy As HTML で HTML をクリップボードに書き出して貼り付けてみました.
今のところ気になるところとしてはプレビューが追従しないのがちょっとという感じですかね.
後,書いている途中に一度フリーズしました><

暫く試してみようと思います.

]]>
https://matoken.org/blog/2015/08/28/atom-editor-as-markdown-editor/feed/ 0
フレームバッファであひる焼き(fbterm の 背景画像の設定) https://matoken.org/blog/2015/08/11/framebuffer_backbround_image/ https://matoken.org/blog/2015/08/11/framebuffer_backbround_image/#comments Tue, 11 Aug 2015 04:46:21 +0000 http://matoken.org/blog/?p=864 一部の楽屋ネタ的なものですが,Twitter であひるを焼く人たちがいます.

libcaca というライブラリのデモで cacafire というものがあるのですが,これがアスキーアートで炎の燃える様子が動画で表現されるので楽しいです.これであひるを焼くように見せかけないだろうかと思いました.

フレームバッファを使えばきっと出来るなーと.そしてfbterm 1.5 からバックグラウンドイメージのサポートが入っていて,デモ用に fbv というものがあります.これを組み合わせればいけるだろうと試してみました.

が,試してみたところ libgif まわりで少し嵌ったのでメモ.

環境

  • Debian stretch amd64 or Debian jessir amd64

関連パッケージを導入

$ sudo apt install build-essential libpng-dev libjpeg-dev libgif-dev

source 入手 & build

$ wget http://s-tech.elsat.net.pl/fbv/fbv-1.0b.tar.gz
$ tar tvf fbv-1.0b.tar.gz
$ tar xf fbv-1.0b.tar.gz
$ cd fbv-1.0b
$ ./configure --help
    :
$ ./configure --prefix=$HOME/usr/local
$ make

ここで問題発生.

% ./configure
checking for libungif presence... no
 :
% make
gif.o: In function `fh_gif_load':
gif.c:(.text+0x111): undefined reference to `DGifOpenFileName'
gif.c:(.text+0x12a): undefined reference to `DGifGetRecordType'
gif.c:(.text+0x156): undefined reference to `DGifGetExtension'
gif.c:(.text+0x189): undefined reference to `DGifGetExtensionNext'
gif.c:(.text+0x1b0): undefined reference to `DGifCloseFile'
gif.c:(.text+0x1c4): undefined reference to `DGifGetImageDesc'
gif.c:(.text+0x2dc): undefined reference to `DGifGetLine'
gif.c:(.text+0x409): undefined reference to `DGifCloseFile'
gif.c:(.text+0x45b): undefined reference to `DGifGetLine'
gif.o: In function `fh_gif_getsize':
gif.c:(.text+0x5df): undefined reference to `DGifOpenFileName'
gif.c:(.text+0x5f8): undefined reference to `DGifGetRecordType'
gif.c:(.text+0x61a): undefined reference to `DGifGetExtension'
gif.c:(.text+0x631): undefined reference to `DGifGetExtensionNext'
gif.c:(.text+0x654): undefined reference to `DGifCloseFile'
gif.c:(.text+0x674): undefined reference to `DGifGetImageDesc'
gif.c:(.text+0x68d): undefined reference to `DGifCloseFile'
collect2: error: ld returned 1 exit status

libungif が見つからずエラーになっています.パッケージ内にはそれらしいものは存在しますが実体が無さそうです.

% dpkg -L libgif-dev|grep ungif
/usr/lib/libungif.la
/usr/lib/libungif.so
/usr/lib/libungif.a
% ls -l /usr/lib/libungif.so
lrwxrwxrwx 1 root root 15 12月  8  2013 /usr/lib/libungif.so -> libgif.so.4.1.6
$ ls -l /usr/lib/libgif.so.4.1.6
ls: cannot access /usr/lib/libgif.so.4.1.6: No such file or directory

libungif/libgif の違いはなんだろうと調べてみるとUnisys社のLZW特許問題を回避するためのものが libungif だったようです.2004年に特許は切れているので現在は libgif になってる感じ?

gif ファイルを使わないようにして回避

configure option で gifを使わないようにして回避します.これでもほぼ問題ない気もする.

./configure --without-libgif

configure script を書き換えて libgif を使うようにする

ちょっと乱暴ですが, configure script の libungif を libgif に一括で書き換えてしまいます.

% sed -e "s/ungif/gif/g" ./configure-org > ./configure
% ./configure
% make

シンボリックリンクを貼って逃げる

現在こんな感じなので,

% ls -la /usr/lib/lib*gif*
lrwxrwxrwx 1 root root  8 Dec  8  2013 /usr/lib/libungif.a -> libgif.a
lrwxrwxrwx 1 root root  9 Dec  8  2013 /usr/lib/libungif.la -> libgif.la
lrwxrwxrwx 1 root root 15 Dec  8  2013 /usr/lib/libungif.so -> libgif.so.4.1.6

こんな感じでシンボリックリンクを貼ってあげる.

% sudo ln -s /usr/lib/x86_64-linux-gnu/libgif.so /usr/lib/libgif.so.4.1.6

後はそのままbuild

あひるの表示

fbv で画像を表示してみます.

$ fbv ahiru.png

以下のページに fbv で背景を設定して fbterm を起動する script があります.

これを少しいじってこんな感じに

#!/bin/bash
# fbterm-bi: a wrapper script to enable background image with fbterm
# usage: fbterm-bi /path/to/image fbterm-options
clear
echo -ne "\e[?25l" # hide cursor
fbv -ciuke "$1" << EOF
q
EOF
shift
export FBTERM_BACKGROUND_IMAGE=1
exec fbterm "$@"

いじったのはゴミが残る場合があるので初めに clear を実行.fbv で縦横比虫をしないように -r option を消しました.

あひる焼き

もう少しで焼けます.
あひるは用意出来たので今度は炎の用意です.cacafire の含まれている caca-utils パッケージを導入します.

% sudo apt install caca-utils

焼きます

% cacafire

#terminal をフレームバッファも含めて動画でスクリーンショットとる方法が解らず今回は仮想マシンで実行してキャプチャしました.だれか端末のフレームバッファも含めての動画でのスクリーンショットのとり方を知ってる人が居たら教えて下さいo
##文字だけなら ttyrec とか asciicast が,1枚の画像だけであれば fbgrab があるんですけどね……・

実用性?

今回のは完全にネタですが,切替器で1つの KVM で複数端末を使う場合はそれぞれ別の壁紙を設定しておくと間違いが起こりにくくなっていいかもしれません.しかし今回の方法だと login しないといけないのでいまいち.login 以前に壁紙を設置する方法も調べてみたいと思います.

関連URL

]]>
https://matoken.org/blog/2015/08/11/framebuffer_backbround_image/feed/ 2
さくらのVPS シリアルコンソール(β版) が開始されていたので試す https://matoken.org/blog/2015/08/01/sakuravps_serial_console/ https://matoken.org/blog/2015/08/01/sakuravps_serial_console/#respond Sat, 01 Aug 2015 04:57:01 +0000 http://matoken.org/blog/?p=842 さくらのVPS ののサーバ設定を変えてtiarra や lingrircgw とかのの自動起動確認のために再起動しようと思い,再起動を見守るためにコンソールを立ち上げようとしたところ新しい項目が増えていました.

Screenshot from 2015-08-01 02-25-08

シリアルコンソール(β版) がそれです.
確認すると 7/23 ににリリースされたようです.

早速設定してみます.設定内容は自分メモを見ながら以下のような感じでで設定しましたちなみに,少なくともDebian Squeese ~ Jessie まで同じ設定でいけてます.

/etc/inittab

#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100

の部分を以下の様に変更.

T0:23:respawn:/sbin/getty -L ttyS0 115200 vt100

/etc/default/grub の以下の辺りを設定

GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8"
GRUB_TERMINAL=serial
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0"

GRUB に反映

$ sudo update-grub

再起動して動作確認.
これでGRUB の画面からシリアルコンソールに表示されるようになりました.

Screenshot from 2015-08-01 03-05-28
Screenshot from 2015-08-01 02-50-34
Screenshot from 2015-08-01 13-33-25
Screenshot from 2015-08-01 13-32-17

日本語入力は下のテキスト送信からとサポートサイトには書かれていますが,普通に uim-fep とかでも入力できました.
以下のような感じで設定すればいいんだけどこの辺りの詳細は以下のページを参考にしてみてください.

$ sudo apt install uim-fep uim-mozc
$ cat << __EOF__ > ~/.uim
(define-key generic-on-key? '("<Control>\\" "<Shift> " "<Control> "))
(define-key generic-off-key? '("<Control>\\" "<Shift> " "<Control> "))
$ uim-mozc -u mozc

Screenshot from 2015-08-01 13-34-11
Screenshot from 2015-08-01 13-37-51

これまでは VNCコンソール(HTML5版)を利用していましたがこれからはシリアルでの利用が多くなりそうです.コピペが出来るのが大きい!後はこのシリアルが ssh 経由で利用できたりしたらまた色々使いやすくなりそうな気もします.(セキュリティは注意が必要ですが)

そうそう,ブラウザのシリアルの画面を閉じただけじゃ切断されずそのままなので最後にちゃんとログアウトしておきましょう.

user@hostname:~$ exit
logout

Debian GNU/Linux 8 hostname ttyS0

hostname login:
]]>
https://matoken.org/blog/2015/08/01/sakuravps_serial_console/feed/ 0
apache httpd 2.4 で嵌まる https://matoken.org/blog/2015/06/29/apache-httpd-2-4/ https://matoken.org/blog/2015/06/29/apache-httpd-2-4/#respond Mon, 29 Jun 2015 12:06:31 +0000 http://matoken.org/blog/?p=833 DP1M0712

apahce httpd 2.2.(wheezy)から2.4.(jessie)への移行で適当なサーバをえいやで上げて動かなくなったのを復旧したメモ.

virtual host が有効にならない

/etc/apache2/sites-enabled/ 以下には設定ファイルがあるのに読み込まれず default しか表示されない.

sites-available からリンクを貼り直そうとするとエラーとなる

$ sudo a2dissite example.com
ERROR: Site example.com does not exist!
$ sudo rm /etc/apache2/sites-enabled/example.com
$ sudo a2ensite example.com
ERROR: Site example.com does not exist!

エラーメッセージで検索するとファイル名を *.conf にすれば良いよう.

この部分の該当場所は /etc/apache2/apache2.conf のここ

IncludeOptional sites-enabled/*.conf

2.2からの変更を確認するとこのように変わっていた.

 # Include the virtual host configurations:
-Include sites-enabled/
+IncludeOptional sites-enabled/*.conf

ということでこんな感じで

$ sudo rm /etc/apache2/sites-enabled/example.com
$ sudo mv /etc/apache2/sites-available/example.com /etc/apache2/sites-available/example.com.conf
$ sudo  a2ensite example.com.conf

設定ファイルの数が多かったら /etc/apache2/apache2.conf の設定を * にしても良いかも(未検証)

-IncludeOptional sites-enabled/*.conf
+IncludeOptional sites-enabled/*

403 が出る

エラーログは以下のような感じ.見慣れないエラー.

[authz_core:error] [pid 20566] [client nnn.nnn.nnn.nnn:49821] AH01630: client denied by server configuration: /var/www

以下のガイドを見るとどうもacl 周りのコマンド変更のようで

Order deny,allow
Deny from all

の代わりに

Require all granted

で動くようになった.


]]>
https://matoken.org/blog/2015/06/29/apache-httpd-2-4/feed/ 0
Debian Jessie のAdobe Flash Player をupdate-flashplugin-nonfreeで最新にする https://matoken.org/blog/2015/03/29/debian-jessie-adobe-flash-player-update/ https://matoken.org/blog/2015/03/29/debian-jessie-adobe-flash-player-update/#respond Sun, 29 Mar 2015 06:59:54 +0000 http://matoken.org/blog/?p=790 IMGP9666_DNG

最近Debian Jessie でAdobe Flash が古いと怒られてるけどpkgでなかなか降りて来ないのでupdate-flashplugin-nonfree を手動で叩いて最新にしたメモです.
#え?GNU Gnashですか?ちょっとつらいですねARM とかでも動くのは良いんですが….

最近Iceweasel やFirefox でAdobe Flash のあるページを見ようとするとバージョンが古いのでAdobe Flash がブロックされます.とりあえず許可すると動作しますが面倒だし意図しないものも実行してしまいそうです.Jessie はtesting とはいえもう2週間位この状態が続いている気がするのでもしかしてFirefox がLinux以外のバージョンを元に古いと行ってる可能性があるのでは?と思って以下のページで確認すると最新は11.2.202.451 なのに対して11.2.202.425 と実際古かったです.

#しかしLinux版大分バージョン番号が離れてきましたね….今のところ見当たらないけどそろそろ対応できないsiteとか出てきたりして.

Debian Jessie ではAdobe Flash はflashplugin-nonfree パッケージを利用して導入しています.このパッケージはAdobe Flash Player のバージョンの確認を行い,最新版をダウンロードして導入してくれるものです.パッケージの中を見るとこんな感じでした.

% dpkg -L flashplugin-nonfree
/.
/var
/var/lib
/var/lib/flashplugin-nonfree
/var/cache
/var/cache/flashplugin-nonfree
/usr
/usr/sbin
/usr/sbin/update-flashplugin-nonfree
/usr/share
/usr/share/applications
/usr/share/man
/usr/share/man/man8
/usr/share/man/man8/update-flashplugin-nonfree.8.gz
/usr/share/icons
/usr/share/icons/hicolor
/usr/share/icons/hicolor/22x22
/usr/share/icons/hicolor/22x22/apps
/usr/share/icons/hicolor/48x48
/usr/share/icons/hicolor/48x48/apps
/usr/share/icons/hicolor/32x32
/usr/share/icons/hicolor/32x32/apps
/usr/share/icons/hicolor/24x24
/usr/share/icons/hicolor/24x24/apps
/usr/share/icons/hicolor/16x16
/usr/share/icons/hicolor/16x16/apps
/usr/share/pixmaps
/usr/share/bug
/usr/share/bug/flashplugin-nonfree
/usr/share/bug/flashplugin-nonfree/script
/usr/share/doc
/usr/share/doc/flashplugin-nonfree
/usr/share/doc/flashplugin-nonfree/copyright
/usr/share/doc/flashplugin-nonfree/changelog.gz
/usr/share/doc/flashplugin-nonfree/README
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/flashplugin-nonfree
/usr/lib
/usr/lib/flashplugin-nonfree
/usr/lib/flashplugin-nonfree/pubkey.asc
/usr/lib/mozilla
/usr/lib/mozilla/plugins
/usr/bin

README を確認するとWiki page 読んでねとのこと.

% cat /usr/share/doc/flashplugin-nonfree/README
Please read the information at:
http://wiki.debian.org/FlashPlayer

てことで--status で確認を行い,--installで最新に出来るようです.実際に叩いてみます.

% sudo /usr/sbin/update-flashplugin-nonfree
Usage:
  update-flashplugin-nonfree --install
  update-flashplugin-nonfree --uninstall
  update-flashplugin-nonfree --status
Additional options:
  --verbose
  --quiet
% sudo /usr/sbin/update-flashplugin-nonfree --status
Flash Player version installed on this system  : 11.2.202.425
Flash Player version available on upstream site: 11.2.202.451
flash-mozilla.so - auto mode
  link currently points to /usr/lib/flashplugin-nonfree/libflashplayer.so
/usr/lib/flashplugin-nonfree/libflashplayer.so - priority 50
/usr/lib/gnash/libgnashplugin.so - priority 10
Current 'best' version is '/usr/lib/flashplugin-nonfree/libflashplayer.so'.
% sudo /usr/sbin/update-flashplugin-nonfree --install
--2015-03-29 06:35:12--  https://fpdownload.macromedia.com/get/flashplayer/pdc/11.2.202.451/install_flash_player_11_linux.x86_64.tar.gz
 :
% sudo /usr/sbin/update-flashplugin-nonfree --status
Flash Player version installed on this system  : 11.2.202.451
Flash Player version available on upstream site: 11.2.202.451
flash-mozilla.so - auto mode
  link currently points to /usr/lib/flashplugin-nonfree/libflashplayer.so
/usr/lib/flashplugin-nonfree/libflashplayer.so - priority 50
/usr/lib/gnash/libgnashplugin.so - priority 10
Current 'best' version is '/usr/lib/flashplugin-nonfree/libflashplayer.so'.

ということで最新の11.2.202.451になりました.
なんで最近apt コマンドで最新になっていないのかは未確認です….

]]>
https://matoken.org/blog/2015/03/29/debian-jessie-adobe-flash-player-update/feed/ 0
Thinkpad x201s にBluetooth module 増設 https://matoken.org/blog/2015/03/29/thinkpad-x201s_bluetooth-module/ https://matoken.org/blog/2015/03/29/thinkpad-x201s_bluetooth-module/#respond Sat, 28 Mar 2015 19:54:59 +0000 http://matoken.org/blog/?p=782

最近のメインマシンはThinkpad x201s です.これは2台めで中古で買って元のものとニコイチで使っています.良い部品はだいたい移行していたのですが,Bluetooth module は液晶パネルしたとめんどくさいので後回しになっていたのでした.でもXperia Pro でBluetooth テザリングが可能になったので重い腰を上げることに.実際やってみるとあっという間でした.

Thinkpad は保守マニュアルが日本語で公開されているのでとても便利です :)

昔から公開していて,Webでpdfが公開される前はコピーサービスで入手していました.これのおかげで試行錯誤する必要がなくとても助かっています.これもThinkpadを使っている理由の一つです :)

マニュアルを見ると以下の辺りを参考にLCD全面ベゼルを取り外せば良いようですが,ネジキャップを剥がすのとかが面倒です.試しに赤く印をつけた3本だけを外して試すと旧マシンからモジュールの取り出しが出来ました.同様に新マシンも3本だけネジを外して取り付けも出来ました.
Screenshot from 2015-03-28 10:13:07
IMG_20150328_091845IMG_20150328_093620

組み付けた後起動するとさくっと認識.Bluetooth PAN 接続も問題なく行えました.
Screenshot from 2015-03-28 10:11:29

たまにUSBドングルで利用していましたが内臓はスッキリしてていいですね.

Thinkpad関連でよく利用するお店

  • ThinkFactory IBM Lenovo秋葉原 持込修理 販売 保守パーツ 旧PS/PLAZA WAKAMATSU Thinkpadコーナー
  • 中古 ThinkPad 販売専門店 Be-Stock! 鹿児島県鹿屋市に実店舗がある中古店.通販が主で店舗には余り物は並んでない.言えば出てくる.
  • eBay パーツをよく買う
  • ]]>
    https://matoken.org/blog/2015/03/29/thinkpad-x201s_bluetooth-module/feed/ 0
    Xperia Pro(MK16a)をBootloader Unlock してみた https://matoken.org/blog/2015/03/24/xperia-pro_mk16a_bootloader-unlock/ https://matoken.org/blog/2015/03/24/xperia-pro_mk16a_bootloader-unlock/#comments Tue, 24 Mar 2015 07:55:46 +0000 http://matoken.org/blog/?p=764

    Xperia Pro(MK16a)を持っているのですが,OSが古いし標準アプリも多くてストレージもいっぱいで使いたいアプリもなかなか入れることが出来ません.
    最近はこの端末にMVNOのSIMを刺してモバイルルータ and GPSロガー的に使っていますがbluetooth tethering も使えずWi-Fi tethering だとバッテリの減りも早いです.ということでカスタムROMやCyanogenMod11か12あたりに入れ替えたいのですがブートローダーにロックがかかっているのでまずはこれを解除しないといけません.Test Point を使ったりするのは面倒だなと思っていたのですが,現在は公式でアンロックコードを手に入れることができるのでこちらで行うことに.
    ※保証がきかなくなります.SEUSなどが利用できなくなります.公式アップデートも利用できなくなるそうです.(まあこれからOTAとか来ることはないと思いますが)

    本体の他に以下のものが必要です.ここでは開発環境の説明はしません.

    • Android 開発環境の動作するPC(今回はDebian Jessie)
    • Android 開発環境の中のfastboot コマンド(sdk/platform-tools 以下)
    • USB A-microB ケーブル

    アンロックコードの入手

    アンロックコードは以下のページから入手できます.

    機種を選択して,メールアドレスを入力すると確認メールが届くので,そのメールのURL をクリックするとIMEIの入力画面になって,そこでIMEI を入力することでCodeが入手できます.

    アンロック

    Xperia Pro の電源を切ります.
    USBケーブルはPCのみに接続する
    電源Off 状態からメニューボタンを押しながらUSBケーブルを接続する
    右上側面のHDMIコネクタ横のLEDが青くなるとFastbootモードになっている

    Fastboot モードの時のdmesgはこんな感じでした.

    [78677.917985] usb 1-1.1: new high-speed USB device number 30 using ehci-pci
    [78678.013776] usb 1-1.1: unable to get BOS descriptor
    [78678.025756] usb 1-1.1: New USB device found, idVendor=0fce, idProduct=0dde
    [78678.025764] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    [78678.025769] usb 1-1.1: Product: S1Boot Fastboot
    [78678.025774] usb 1-1.1: Manufacturer: Sony Ericsson Mobile Communications AB
    [78678.025778] usb 1-1.1: SerialNumber: CB5A1G45XXXXXX
    

    fastboot devices コマンドで接続を確認します.

    % ./fastboot devices
    CB5A1G45XXXXXX  fastboot
    % ./fastboot -i 0x0fce getvar version
    version: 0.3
    finished. total time: 0.001s
    

    もしここでno permissions fastboot というエラーが出る場合はadb serverを起動しなおしてみるとうまく行くようです.それでもうまく行かない場合root権限で起動し直す(sudo command)とうまく行ったことも.

    % ./fastboot devices
    no permissions  fastboot
    % ./adb kill-server
    % ./adb start-server
    * daemon not running. starting it now on port 5037 *
    * daemon started successfully *
    % ./fastboot devices
    CB5A1G45XXXXXX  fastboot
    

    問題ないようなら以下のコマンドでアンロックコードを指定してアンロックします.

    % ./fastboot -i 0x0fce oem unlock 0xC3BA1080A6XXXXXX
    ...
    (bootloader) Unlock phone requested
    (bootloader) Erasing block 0x00001300
    (bootloader) Erasing block 0x00001400
    (bootloader) Erasing block 0x00001500
    (bootloader) Erasing block 0x00001600
    (bootloader) Erasing block 0x00001700
    (bootloader) Erasing block 0x00001800
    (bootloader) Erasing block 0x00001900
    (bootloader) Erasing block 0x00001a00
    (bootloader) Erasing block 0x00001b00
    (bootloader) Erasing block 0x00001c00
    (bootloader) Erasing block 0x00001d00
    (bootloader) Erasing block 0x00001e00
    (bootloader) Erasing block 0x00001f00
    OKAY [  4.587s]
    finished. total time: 4.587s
    

    これでアンロック完了です.
    次はOSを入れ替えてみます.

    ]]> https://matoken.org/blog/2015/03/24/xperia-pro_mk16a_bootloader-unlock/feed/ 2 端末で動くTwitterClient Rainbowstream https://matoken.org/blog/2015/02/07/terminal_twitter_client_rainbowstream/ https://matoken.org/blog/2015/02/07/terminal_twitter_client_rainbowstream/#respond Fri, 06 Feb 2015 23:30:35 +0000 http://matoken.org/blog/?p=724

    確かOSSJで見かけて知ったのだと思うのですが,

    端末上で動作するTwitterのRainbowstreamというソフトウェアを知りました.

    ユーザーストリーム対応で端末上にユーザストリームや検索結果リストなどが表示できます.画像をアスキーアートで表示する機能もあります.

    導入

    pipで入る

    $ sudo apt-get install python-pip python-dev
    $ sudo pip install rainbowstream PySocks Pillow
    

    初回起動時に認証のためブラウザが起動する.認証ご表示されたpinを端末に貼り付ける.認証情報は ~/.rainbow_oauth に保存されるので要らなくなったら消す.
    無くても動くけど無いと設定変更が出来ないので設定ファイルの用意をする.

    % wget https://raw.githubusercontent.com/DTVD/rainbowstream/master/rainbowstream/colorset/config -O /tmp/config
    % mv /tmp/config ~/.rainbow_config.json
    

    GNU Screen のウィンドウ分割モードだと崩れてしまうので,小さめのウィンドウに表示するといい感じです.以下の画像はawesome で端末を2つ表示してRainbowstreamを実行した端末を小さくしているところです.
    20150202_07:02:05-608

    画像のアスキーアート表示は楽しいのですが,一気にログが流れてしまうのでoffにしちゃいました.
    自作のPerl Script で昔作ったものがあるのですが,Rainbowstreamのほうがカラフルで見た目がいい感じです.

    ]]> https://matoken.org/blog/2015/02/07/terminal_twitter_client_rainbowstream/feed/ 0 NEXUS5 を落っことしてしまいISAI LGL22 を買った(Linux環境でのroot取得とカメラ無音化) https://matoken.org/blog/2014/12/25/isai_lgl22_linux_root/ https://matoken.org/blog/2014/12/25/isai_lgl22_linux_root/#respond Wed, 24 Dec 2014 20:13:32 +0000 http://matoken.org/blog/?p=691

    Nexus5 をどこかに落っことしてしまい(体調が悪い時で記憶があやふや.桜島港から家の間のどこかに多分落ちている)不便なので代替機を探して中古のISAI LGL22 を入手した.兄弟機で面白みはあまりないが,LTE でmineo が使えるのとUnLock が安価&安易でDocomo の電波も掴みそこそこ安いということで….

    とりあえず初期化してroot 取ってカメラ無音化までした.root 取得の手順は確立されているけれどWindows向けでバッチファイルを叩くものしか見当たらなかったのでLinux 向けにメモ.(WinでもMacでも同じだけど)

    • 初期化
    • OS Update
      TAO で 4.4.2 に.
    • 画面のロックをパスワードに
    • 所有者情報設定
    • mineo 設定
    • 暗号化
      ※充電が80%以上になってから出ないと実行できない.
    • root取得
      isai_rootkit_kk_only.rar を以下から入手して利用した.https://mega.co.nz/#!h5EAmY7K!rrM2jZlCnRGc-EzhPhrxQ8gfPtGAcuv_mPPH8lYo7_M

      sha1sum    0a048c7be86ca64dc755a31a3c3a8d32455a3361
      sha256sum    67b3481f15e5f597e60397b9294074354877cd283ecede5bd8ba171e14392cd2
      

      前準備としてUSBデバッグを有効にしてPCと接続しUSBデバッグを有効にしておく.
      isai_rootkit_kk_only.rar を展開して install.bat を見ながら以下のような感じでコマンドを叩く.
      ※要開発環境.

      cd isai_rootkit_kk_only
      adb wait-for-device
      adb push "files" /data/local/tmp
      adb shell chmod 755 /data/local/tmp/getroot
      adb shell chmod 755 /data/local/tmp/busybox_file
      adb shell chmod 755 /data/local/tmp/install.sh
      adb shell chmod 755 /data/local/tmp/remove_apps_and_bins.sh
      adb pull /system/app/LGDMSClient.odex ./backup/system/app/LGDMSClient.odex
      adb pull /system/app/LGDMSClient.apk ./backup/system/app/LGDMSClient.apk
      adb pull /system/bin/subsystem_ramdump ./backup/system/bin/subsystem_ramdump
      adb pull /system/bin/dumpstate ./backup/system/bin/dumpstate
      adb pull /system/bin/fssamond ./backup/system/bin/fssamond
      adb shell "/data/local/tmp/getroot /data/local/tmp/remove_apps_and_bins.sh"
      adb wait-for-device
      adb shell "/data/local/tmp/getroot /data/local/tmp/install.sh"
      adb wait-for-device
      adb shell "rm /data/local/tmp/getroot"
      adb shell "rm /data/local/tmp/busybox_file"
      adb shell "rm /data/local/tmp/eu.chainfire.supersu-193.apk"
      adb shell "rm /data/local/tmp/remove_apps_and_bins.sh"
      adb shell "rm /data/local/tmp/install.sh"
      adb shell "rm -rf /data/local/tmp/system"
      
    • カメラ無音化
      /system/media/audio/ui/camera_click.ogg と /system/media/audio/ui/VideoRecord.ogg を退避する.

      adb shell
      su
      mount -o remount,rw /system
      cd /system/media/audio/ui/
      mv camera_click.ogg camera_click.ogg-
      mv VideoRecord.ogg VideoRecord.ogg-
      cd
      sync
      mount -o remount,ro /system
      exit
      exit
      

      #起動音と起動後のパスフレーズ入力時のキークリック音も消したいが見当たらず.

    • アプリ入れたり

    ]]>
    https://matoken.org/blog/2014/12/25/isai_lgl22_linux_root/feed/ 0
    ibus-mozc から fcitx-mozc に変更したら JOSM で日本語入力できなくなって困る https://matoken.org/blog/2014/09/21/ibus-mozc_2_fcitx-mozc-josm/ https://matoken.org/blog/2014/09/21/ibus-mozc_2_fcitx-mozc-josm/#respond Sun, 21 Sep 2014 07:25:06 +0000 http://matoken.org/blog/?p=655 JOSM はマルチプラットホームでLinux/Windows/Mac で動作しますが,以下の話はLinux固有の問題です.

    日本語入力のためのインプットメソッドフレームワークを iBus から fcitx に切り替えたのですが,JOSM で日本語入力ができなくなってしまっていました.Ctrl+Space でトルグするようにしているのですが,他のアプリケーションでは問題ないのにJOSM の場合は無反応で日本語入力ができなくなってしまいました,
    そこで一時的にiBus/fcitx の両方が動作するようにしてJOSM 利用時だけiBus を使うようにしていました.

    この話を #osckansai で(確か)武山さんに話したところ環境変数か何かが足りないのでは?と教えてもらいました.

    少し試したところ XMODIFIERS=”@im=fcitx” を設定するとfcitx でJOSM に日本語入力が出来るようになりました.

    % XMODIFIERS=”@im=fcitx” java -jar ~/bin/josm-tested.jar

    変換候補がウィンドウの下に表示されちゃいますがまあ許容範囲かなと.

    Screenshot from 2014-09-21 13:08:09

    毎回コマンドを打つのもあれなのでこんな感じでショートカットを作成しておきました.
    #何気にこっちのほうが時間掛かったorz
    ##環境変数を指定するには env を付ける.~/, $HOME は使えなかったのでフルパス.

    ]]>
    https://matoken.org/blog/2014/09/21/ibus-mozc_2_fcitx-mozc-josm/feed/ 0